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 }