github.com/Finschia/finschia-sdk@v0.48.1/client/grpc_query_test.go (about) 1 //go:build norace 2 // +build norace 3 4 package client_test 5 6 import ( 7 "context" 8 "fmt" 9 "testing" 10 11 "github.com/stretchr/testify/suite" 12 "google.golang.org/grpc" 13 "google.golang.org/grpc/metadata" 14 15 "github.com/Finschia/finschia-sdk/testutil/network" 16 "github.com/Finschia/finschia-sdk/testutil/testdata" 17 sdk "github.com/Finschia/finschia-sdk/types" 18 grpctypes "github.com/Finschia/finschia-sdk/types/grpc" 19 banktypes "github.com/Finschia/finschia-sdk/x/bank/types" 20 ) 21 22 type IntegrationTestSuite struct { 23 suite.Suite 24 25 network *network.Network 26 } 27 28 func (s *IntegrationTestSuite) SetupSuite() { 29 s.T().Log("setting up integration test suite") 30 31 s.network = network.New(s.T(), network.DefaultConfig()) 32 s.Require().NotNil(s.network) 33 34 _, err := s.network.WaitForHeight(2) 35 s.Require().NoError(err) 36 } 37 38 func (s *IntegrationTestSuite) TearDownSuite() { 39 s.T().Log("tearing down integration test suite") 40 s.network.Cleanup() 41 } 42 43 func (s *IntegrationTestSuite) TestGRPCQuery() { 44 val0 := s.network.Validators[0] 45 46 // gRPC query to test service should work 47 testClient := testdata.NewQueryClient(val0.ClientCtx) 48 testRes, err := testClient.Echo(context.Background(), &testdata.EchoRequest{Message: "hello"}) 49 s.Require().NoError(err) 50 s.Require().Equal("hello", testRes.Message) 51 52 // gRPC query to bank service should work 53 denom := fmt.Sprintf("%stoken", val0.Moniker) 54 bankClient := banktypes.NewQueryClient(val0.ClientCtx) 55 var header metadata.MD 56 bankRes, err := bankClient.Balance( 57 context.Background(), 58 &banktypes.QueryBalanceRequest{Address: val0.Address.String(), Denom: denom}, 59 grpc.Header(&header), // Also fetch grpc header 60 ) 61 s.Require().NoError(err) 62 s.Require().Equal( 63 sdk.NewCoin(denom, s.network.Config.AccountTokens), 64 *bankRes.GetBalance(), 65 ) 66 blockHeight := header.Get(grpctypes.GRPCBlockHeightHeader) 67 s.Require().NotEmpty(blockHeight[0]) // Should contain the block height 68 69 // Request metadata should work 70 val0.ClientCtx = val0.ClientCtx.WithHeight(1) // We set clientCtx to height 1 71 bankClient = banktypes.NewQueryClient(val0.ClientCtx) 72 bankRes, err = bankClient.Balance( 73 context.Background(), 74 &banktypes.QueryBalanceRequest{Address: val0.Address.String(), Denom: denom}, 75 grpc.Header(&header), 76 ) 77 blockHeight = header.Get(grpctypes.GRPCBlockHeightHeader) 78 s.Require().Equal([]string{"1"}, blockHeight) 79 } 80 81 func TestIntegrationTestSuite(t *testing.T) { 82 suite.Run(t, new(IntegrationTestSuite)) 83 }