75 lines
2.4 KiB
Go
75 lines
2.4 KiB
Go
package client_test
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/suite"
|
|
"google.golang.org/grpc"
|
|
"google.golang.org/grpc/metadata"
|
|
|
|
"cosmossdk.io/log"
|
|
storetypes "cosmossdk.io/store/types"
|
|
|
|
"github.com/cosmos/cosmos-sdk/baseapp"
|
|
"github.com/cosmos/cosmos-sdk/codec"
|
|
"github.com/cosmos/cosmos-sdk/codec/testutil"
|
|
"github.com/cosmos/cosmos-sdk/runtime"
|
|
"github.com/cosmos/cosmos-sdk/testutil/integration"
|
|
"github.com/cosmos/cosmos-sdk/testutil/testdata"
|
|
"github.com/cosmos/cosmos-sdk/testutil/x/counter"
|
|
counterkeeper "github.com/cosmos/cosmos-sdk/testutil/x/counter/keeper"
|
|
countertypes "github.com/cosmos/cosmos-sdk/testutil/x/counter/types"
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
|
|
)
|
|
|
|
type IntegrationTestSuite struct {
|
|
suite.Suite
|
|
|
|
ctx sdk.Context
|
|
cdc codec.Codec
|
|
counterClient countertypes.QueryClient
|
|
testClient testdata.QueryClient
|
|
}
|
|
|
|
func (s *IntegrationTestSuite) SetupSuite() {
|
|
s.T().Log("setting up integration test suite")
|
|
|
|
logger := log.NewNopLogger()
|
|
keys := storetypes.NewKVStoreKeys(countertypes.StoreKey)
|
|
cms := integration.CreateMultiStore(keys, logger)
|
|
s.ctx = sdk.NewContext(cms, true, logger)
|
|
cfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, counter.AppModule{})
|
|
s.cdc = cfg.Codec
|
|
|
|
queryHelper := baseapp.NewQueryServerTestHelper(s.ctx, cfg.InterfaceRegistry)
|
|
testdata.RegisterQueryServer(queryHelper, testdata.QueryImpl{})
|
|
s.testClient = testdata.NewQueryClient(queryHelper)
|
|
|
|
kvs := runtime.NewKVStoreService(keys[countertypes.StoreKey])
|
|
counterKeeper := counterkeeper.NewKeeper(runtime.NewEnvironment(kvs, logger))
|
|
countertypes.RegisterQueryServer(queryHelper, counterKeeper)
|
|
s.counterClient = countertypes.NewQueryClient(queryHelper)
|
|
}
|
|
|
|
func (s *IntegrationTestSuite) TearDownSuite() {
|
|
s.T().Log("tearing down integration test suite")
|
|
}
|
|
|
|
func (s *IntegrationTestSuite) TestGRPCQuery() {
|
|
// gRPC query to test service should work
|
|
testRes, err := s.testClient.Echo(context.Background(), &testdata.EchoRequest{Message: "hello"})
|
|
s.Require().NoError(err)
|
|
s.Require().Equal("hello", testRes.Message)
|
|
|
|
var header metadata.MD
|
|
res, err := s.counterClient.GetCount(s.ctx, &countertypes.QueryGetCountRequest{}, grpc.Header(&header))
|
|
s.Require().NoError(err)
|
|
s.Require().Equal(int64(0), res.TotalCount)
|
|
}
|
|
|
|
func TestIntegrationTestSuite(t *testing.T) {
|
|
suite.Run(t, new(IntegrationTestSuite))
|
|
}
|