github.com/Finschia/finschia-sdk@v0.48.1/baseapp/grpcrouter_test.go (about) 1 package baseapp_test 2 3 import ( 4 "context" 5 "os" 6 "testing" 7 8 "github.com/Finschia/ostracon/libs/log" 9 "github.com/stretchr/testify/require" 10 dbm "github.com/tendermint/tm-db" 11 12 "github.com/Finschia/finschia-sdk/baseapp" 13 "github.com/Finschia/finschia-sdk/codec/types" 14 "github.com/Finschia/finschia-sdk/simapp" 15 "github.com/Finschia/finschia-sdk/testutil/testdata" 16 sdk "github.com/Finschia/finschia-sdk/types" 17 ) 18 19 func TestGRPCGatewayRouter(t *testing.T) { 20 qr := baseapp.NewGRPCQueryRouter() 21 interfaceRegistry := testdata.NewTestInterfaceRegistry() 22 qr.SetInterfaceRegistry(interfaceRegistry) 23 testdata.RegisterQueryServer(qr, testdata.QueryImpl{}) 24 helper := &baseapp.QueryServiceTestHelper{ 25 GRPCQueryRouter: qr, 26 Ctx: sdk.Context{}.WithContext(context.Background()), 27 } 28 client := testdata.NewQueryClient(helper) 29 30 res, err := client.Echo(context.Background(), &testdata.EchoRequest{Message: "hello"}) 31 require.Nil(t, err) 32 require.NotNil(t, res) 33 require.Equal(t, "hello", res.Message) 34 35 require.Panics(t, func() { 36 _, _ = client.Echo(context.Background(), nil) 37 }) 38 39 res2, err := client.SayHello(context.Background(), &testdata.SayHelloRequest{Name: "Foo"}) 40 require.Nil(t, err) 41 require.NotNil(t, res) 42 require.Equal(t, "Hello Foo!", res2.Greeting) 43 44 spot := &testdata.Dog{Name: "Spot", Size_: "big"} 45 any, err := types.NewAnyWithValue(spot) 46 require.NoError(t, err) 47 res3, err := client.TestAny(context.Background(), &testdata.TestAnyRequest{AnyAnimal: any}) 48 require.NoError(t, err) 49 require.NotNil(t, res3) 50 require.Equal(t, spot, res3.HasAnimal.Animal.GetCachedValue()) 51 } 52 53 func TestRegisterQueryServiceTwice(t *testing.T) { 54 // Setup baseapp. 55 db := dbm.NewMemDB() 56 encCfg := simapp.MakeTestEncodingConfig() 57 app := baseapp.NewBaseApp("test", log.NewOCLogger(log.NewSyncWriter(os.Stdout)), db, encCfg.TxConfig.TxDecoder()) 58 app.SetInterfaceRegistry(encCfg.InterfaceRegistry) 59 testdata.RegisterInterfaces(encCfg.InterfaceRegistry) 60 61 // First time registering service shouldn't panic. 62 require.NotPanics(t, func() { 63 testdata.RegisterQueryServer( 64 app.GRPCQueryRouter(), 65 testdata.QueryImpl{}, 66 ) 67 }) 68 69 // Second time should panic. 70 require.Panics(t, func() { 71 testdata.RegisterQueryServer( 72 app.GRPCQueryRouter(), 73 testdata.QueryImpl{}, 74 ) 75 }) 76 }