cosmos-sdk/x/slashing/keeper/grpc_query_test.go
mergify[bot] 1bc7ff528c
refactor(x/slashing): audit x/slashing changes (backport #21270) (#21279)
Co-authored-by: Julián Toledano <JulianToledano@users.noreply.github.com>
2024-08-13 22:14:05 +02:00

95 lines
3.0 KiB
Go

package keeper_test
import (
gocontext "context"
"time"
"cosmossdk.io/x/slashing/testutil"
slashingtypes "cosmossdk.io/x/slashing/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/query"
)
func (s *KeeperTestSuite) TestGRPCQueryParams() {
queryClient := s.queryClient
require := s.Require()
paramsResp, err := queryClient.Params(gocontext.Background(), &slashingtypes.QueryParamsRequest{})
require.NoError(err)
require.Equal(testutil.TestParams(), paramsResp.Params)
}
func (s *KeeperTestSuite) TestGRPCSigningInfo() {
queryClient, ctx, keeper := s.queryClient, s.ctx, s.slashingKeeper
require := s.Require()
infoResp, err := queryClient.SigningInfo(gocontext.Background(), &slashingtypes.QuerySigningInfoRequest{ConsAddress: ""})
require.Error(err)
require.ErrorContains(err, "invalid request")
require.Nil(infoResp)
consStr, err := s.stakingKeeper.ConsensusAddressCodec().BytesToString(consAddr)
require.NoError(err)
signingInfo := slashingtypes.NewValidatorSigningInfo(
consStr,
0,
time.Unix(2, 0),
false,
int64(0),
)
require.NoError(keeper.ValidatorSigningInfo.Set(ctx, consAddr, signingInfo))
info, err := keeper.ValidatorSigningInfo.Get(ctx, consAddr)
require.NoError(err)
infoResp, err = queryClient.SigningInfo(gocontext.Background(),
&slashingtypes.QuerySigningInfoRequest{ConsAddress: consStr})
require.NoError(err)
require.Equal(info, infoResp.ValSigningInfo)
}
func (s *KeeperTestSuite) TestGRPCSigningInfos() {
queryClient, ctx, keeper := s.queryClient, s.ctx, s.slashingKeeper
require := s.Require()
// set two validator signing information
consAddr1 := sdk.ConsAddress("addr1_______________")
consStr1, err := s.stakingKeeper.ConsensusAddressCodec().BytesToString(consAddr1)
require.NoError(err)
consAddr2 := sdk.ConsAddress("addr2_______________")
signingInfo := slashingtypes.NewValidatorSigningInfo(
consStr1,
0,
time.Unix(2, 0),
false,
int64(0),
)
require.NoError(keeper.ValidatorSigningInfo.Set(ctx, consAddr1, signingInfo))
signingInfo.Address = string(consAddr2)
require.NoError(keeper.ValidatorSigningInfo.Set(ctx, consAddr2, signingInfo))
var signingInfos []slashingtypes.ValidatorSigningInfo
err = keeper.ValidatorSigningInfo.Walk(ctx, nil, func(consAddr sdk.ConsAddress, info slashingtypes.ValidatorSigningInfo) (stop bool, err error) {
signingInfos = append(signingInfos, info)
return false, nil
})
require.NoError(err)
// verify all values are returned without pagination
infoResp, err := queryClient.SigningInfos(gocontext.Background(),
&slashingtypes.QuerySigningInfosRequest{Pagination: nil})
require.NoError(err)
require.Equal(signingInfos, infoResp.Info)
infoResp, err = queryClient.SigningInfos(gocontext.Background(),
&slashingtypes.QuerySigningInfosRequest{Pagination: &query.PageRequest{Limit: 1, CountTotal: true}})
require.NoError(err)
require.Len(infoResp.Info, 1)
require.Equal(signingInfos[0], infoResp.Info[0])
require.NotNil(infoResp.Pagination.NextKey)
require.Equal(uint64(2), infoResp.Pagination.Total)
}