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  }