github.com/Finschia/finschia-sdk@v0.48.1/x/slashing/keeper/grpc_query_test.go (about) 1 package keeper_test 2 3 import ( 4 gocontext "context" 5 "testing" 6 "time" 7 8 "github.com/stretchr/testify/suite" 9 tmproto "github.com/tendermint/tendermint/proto/tendermint/types" 10 11 "github.com/Finschia/finschia-sdk/baseapp" 12 "github.com/Finschia/finschia-sdk/simapp" 13 sdk "github.com/Finschia/finschia-sdk/types" 14 "github.com/Finschia/finschia-sdk/types/query" 15 authtypes "github.com/Finschia/finschia-sdk/x/auth/types" 16 banktypes "github.com/Finschia/finschia-sdk/x/bank/types" 17 "github.com/Finschia/finschia-sdk/x/slashing/testslashing" 18 "github.com/Finschia/finschia-sdk/x/slashing/types" 19 ) 20 21 type SlashingTestSuite struct { 22 suite.Suite 23 24 app *simapp.SimApp 25 ctx sdk.Context 26 queryClient types.QueryClient 27 addrDels []sdk.AccAddress 28 } 29 30 func (suite *SlashingTestSuite) SetupTest() { 31 app := simapp.Setup(false) 32 ctx := app.BaseApp.NewContext(false, tmproto.Header{}) 33 34 app.AccountKeeper.SetParams(ctx, authtypes.DefaultParams()) 35 app.BankKeeper.SetParams(ctx, banktypes.DefaultParams()) 36 app.SlashingKeeper.SetParams(ctx, testslashing.TestParams()) 37 38 addrDels := simapp.AddTestAddrsIncremental(app, ctx, 2, app.StakingKeeper.TokensFromConsensusPower(ctx, 200)) 39 40 info1 := types.NewValidatorSigningInfo(sdk.ConsAddress(addrDels[0]), int64(4), int64(3), 41 time.Unix(2, 0), false, int64(10)) 42 info2 := types.NewValidatorSigningInfo(sdk.ConsAddress(addrDels[1]), int64(5), int64(4), 43 time.Unix(2, 0), false, int64(10)) 44 45 app.SlashingKeeper.SetValidatorSigningInfo(ctx, sdk.ConsAddress(addrDels[0]), info1) 46 app.SlashingKeeper.SetValidatorSigningInfo(ctx, sdk.ConsAddress(addrDels[1]), info2) 47 48 suite.app = app 49 suite.ctx = ctx 50 suite.addrDels = addrDels 51 52 queryHelper := baseapp.NewQueryServerTestHelper(ctx, app.InterfaceRegistry()) 53 types.RegisterQueryServer(queryHelper, app.SlashingKeeper) 54 queryClient := types.NewQueryClient(queryHelper) 55 suite.queryClient = queryClient 56 } 57 58 func (suite *SlashingTestSuite) TestGRPCQueryParams() { 59 queryClient := suite.queryClient 60 paramsResp, err := queryClient.Params(gocontext.Background(), &types.QueryParamsRequest{}) 61 62 suite.NoError(err) 63 suite.Equal(testslashing.TestParams(), paramsResp.Params) 64 } 65 66 func (suite *SlashingTestSuite) TestGRPCSigningInfo() { 67 queryClient := suite.queryClient 68 69 infoResp, err := queryClient.SigningInfo(gocontext.Background(), &types.QuerySigningInfoRequest{ConsAddress: ""}) 70 suite.Error(err) 71 suite.Nil(infoResp) 72 73 consAddr := sdk.ConsAddress(suite.addrDels[0]) 74 info, found := suite.app.SlashingKeeper.GetValidatorSigningInfo(suite.ctx, consAddr) 75 suite.True(found) 76 77 infoResp, err = queryClient.SigningInfo(gocontext.Background(), 78 &types.QuerySigningInfoRequest{ConsAddress: consAddr.String()}) 79 suite.NoError(err) 80 suite.Equal(info, infoResp.ValSigningInfo) 81 } 82 83 func (suite *SlashingTestSuite) TestGRPCSigningInfos() { 84 queryClient := suite.queryClient 85 86 var signingInfos []types.ValidatorSigningInfo 87 88 suite.app.SlashingKeeper.IterateValidatorSigningInfos(suite.ctx, func(consAddr sdk.ConsAddress, info types.ValidatorSigningInfo) (stop bool) { 89 signingInfos = append(signingInfos, info) 90 return false 91 }) 92 93 // verify all values are returned without pagination 94 infoResp, err := queryClient.SigningInfos(gocontext.Background(), 95 &types.QuerySigningInfosRequest{Pagination: nil}) 96 suite.NoError(err) 97 suite.Equal(signingInfos, infoResp.Info) 98 99 infoResp, err = queryClient.SigningInfos(gocontext.Background(), 100 &types.QuerySigningInfosRequest{Pagination: &query.PageRequest{Limit: 1, CountTotal: true}}) 101 suite.NoError(err) 102 suite.Len(infoResp.Info, 1) 103 suite.Equal(signingInfos[0], infoResp.Info[0]) 104 suite.NotNil(infoResp.Pagination.NextKey) 105 suite.Equal(uint64(2), infoResp.Pagination.Total) 106 } 107 108 func TestSlashingTestSuite(t *testing.T) { 109 suite.Run(t, new(SlashingTestSuite)) 110 }