github.com/Iqoqo/consul@v1.4.5/agent/cache-types/node_services_test.go (about)

     1  package cachetype
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/hashicorp/consul/agent/cache"
     8  	"github.com/hashicorp/consul/agent/structs"
     9  	"github.com/stretchr/testify/mock"
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  func TestNodeServices(t *testing.T) {
    14  	require := require.New(t)
    15  	rpc := TestRPC(t)
    16  	defer rpc.AssertExpectations(t)
    17  	typ := &NodeServices{RPC: rpc}
    18  
    19  	// Expect the proper RPC call. This also sets the expected value
    20  	// since that is return-by-pointer in the arguments.
    21  	var resp *structs.IndexedNodeServices
    22  	rpc.On("RPC", "Catalog.NodeServices", mock.Anything, mock.Anything).Return(nil).
    23  		Run(func(args mock.Arguments) {
    24  			req := args.Get(1).(*structs.NodeSpecificRequest)
    25  			require.Equal(uint64(24), req.QueryOptions.MinQueryIndex)
    26  			require.Equal(1*time.Second, req.QueryOptions.MaxQueryTime)
    27  			require.Equal("node-01", req.Node)
    28  			require.True(req.AllowStale)
    29  
    30  			reply := args.Get(2).(*structs.IndexedNodeServices)
    31  			reply.NodeServices = &structs.NodeServices{
    32  				Node: &structs.Node{
    33  					ID:         "abcdef",
    34  					Node:       "node-01",
    35  					Address:    "127.0.0.5",
    36  					Datacenter: "dc1",
    37  				},
    38  			}
    39  
    40  			reply.QueryMeta.Index = 48
    41  			resp = reply
    42  		})
    43  
    44  	// Fetch
    45  	resultA, err := typ.Fetch(cache.FetchOptions{
    46  		MinIndex: 24,
    47  		Timeout:  1 * time.Second,
    48  	}, &structs.NodeSpecificRequest{
    49  		Datacenter: "dc1",
    50  		Node:       "node-01",
    51  	})
    52  	require.NoError(err)
    53  	require.Equal(cache.FetchResult{
    54  		Value: resp,
    55  		Index: 48,
    56  	}, resultA)
    57  }
    58  
    59  func TestNodeServices_badReqType(t *testing.T) {
    60  	require := require.New(t)
    61  	rpc := TestRPC(t)
    62  	defer rpc.AssertExpectations(t)
    63  	typ := &NodeServices{RPC: rpc}
    64  
    65  	// Fetch
    66  	_, err := typ.Fetch(cache.FetchOptions{}, cache.TestRequest(
    67  		t, cache.RequestInfo{Key: "foo", MinIndex: 64}))
    68  	require.Error(err)
    69  	require.Contains(err.Error(), "wrong type")
    70  
    71  }