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  }