github.com/DerekStrickland/consul@v1.4.5/agent/cache-types/prepared_query_test.go (about) 1 package cachetype 2 3 import ( 4 "testing" 5 6 "github.com/hashicorp/consul/agent/cache" 7 "github.com/hashicorp/consul/agent/structs" 8 "github.com/stretchr/testify/mock" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestPreparedQuery(t *testing.T) { 13 require := require.New(t) 14 rpc := TestRPC(t) 15 defer rpc.AssertExpectations(t) 16 typ := &PreparedQuery{RPC: rpc} 17 18 // Expect the proper RPC call. This also sets the expected value 19 // since that is return-by-pointer in the arguments. 20 var resp *structs.PreparedQueryExecuteResponse 21 rpc.On("RPC", "PreparedQuery.Execute", mock.Anything, mock.Anything).Return(nil). 22 Run(func(args mock.Arguments) { 23 req := args.Get(1).(*structs.PreparedQueryExecuteRequest) 24 require.Equal("geo-db", req.QueryIDOrName) 25 require.Equal(10, req.Limit) 26 require.True(req.AllowStale) 27 28 reply := args.Get(2).(*structs.PreparedQueryExecuteResponse) 29 reply.QueryMeta.Index = 48 30 resp = reply 31 }) 32 33 // Fetch 34 result, err := typ.Fetch(cache.FetchOptions{}, &structs.PreparedQueryExecuteRequest{ 35 Datacenter: "dc1", 36 QueryIDOrName: "geo-db", 37 Limit: 10, 38 }) 39 require.NoError(err) 40 require.Equal(cache.FetchResult{ 41 Value: resp, 42 Index: 48, 43 }, result) 44 } 45 46 func TestPreparedQuery_badReqType(t *testing.T) { 47 require := require.New(t) 48 rpc := TestRPC(t) 49 defer rpc.AssertExpectations(t) 50 typ := &PreparedQuery{RPC: rpc} 51 52 // Fetch 53 _, err := typ.Fetch(cache.FetchOptions{}, cache.TestRequest( 54 t, cache.RequestInfo{Key: "foo", MinIndex: 64})) 55 require.Error(err) 56 require.Contains(err.Error(), "wrong type") 57 }