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  }