github.com/cosmos/cosmos-sdk@v0.50.10/x/slashing/keeper/grpc_query_test.go (about)

     1  package keeper_test
     2  
     3  import (
     4  	gocontext "context"
     5  	"time"
     6  
     7  	sdk "github.com/cosmos/cosmos-sdk/types"
     8  	"github.com/cosmos/cosmos-sdk/types/query"
     9  	"github.com/cosmos/cosmos-sdk/x/slashing/testutil"
    10  	slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
    11  )
    12  
    13  func (s *KeeperTestSuite) TestGRPCQueryParams() {
    14  	queryClient := s.queryClient
    15  	require := s.Require()
    16  
    17  	paramsResp, err := queryClient.Params(gocontext.Background(), &slashingtypes.QueryParamsRequest{})
    18  
    19  	require.NoError(err)
    20  	require.Equal(testutil.TestParams(), paramsResp.Params)
    21  }
    22  
    23  func (s *KeeperTestSuite) TestGRPCSigningInfo() {
    24  	queryClient, ctx, keeper := s.queryClient, s.ctx, s.slashingKeeper
    25  	require := s.Require()
    26  
    27  	infoResp, err := queryClient.SigningInfo(gocontext.Background(), &slashingtypes.QuerySigningInfoRequest{ConsAddress: ""})
    28  	require.Error(err)
    29  	require.ErrorContains(err, "invalid request")
    30  	require.Nil(infoResp)
    31  
    32  	signingInfo := slashingtypes.NewValidatorSigningInfo(
    33  		consAddr,
    34  		0,
    35  		int64(0),
    36  		time.Unix(2, 0),
    37  		false,
    38  		int64(0),
    39  	)
    40  
    41  	keeper.SetValidatorSigningInfo(ctx, consAddr, signingInfo)
    42  	info, err := keeper.GetValidatorSigningInfo(ctx, consAddr)
    43  	require.NoError(err)
    44  
    45  	infoResp, err = queryClient.SigningInfo(gocontext.Background(),
    46  		&slashingtypes.QuerySigningInfoRequest{ConsAddress: consAddr.String()})
    47  	require.NoError(err)
    48  	require.Equal(info, infoResp.ValSigningInfo)
    49  }
    50  
    51  func (s *KeeperTestSuite) TestGRPCSigningInfos() {
    52  	queryClient, ctx, keeper := s.queryClient, s.ctx, s.slashingKeeper
    53  	require := s.Require()
    54  
    55  	// set two validator signing information
    56  	consAddr1 := sdk.ConsAddress(sdk.AccAddress([]byte("addr1_______________")))
    57  	consAddr2 := sdk.ConsAddress(sdk.AccAddress([]byte("addr2_______________")))
    58  	signingInfo := slashingtypes.NewValidatorSigningInfo(
    59  		consAddr1,
    60  		0,
    61  		int64(0),
    62  		time.Unix(2, 0),
    63  		false,
    64  		int64(0),
    65  	)
    66  
    67  	keeper.SetValidatorSigningInfo(ctx, consAddr1, signingInfo)
    68  	signingInfo.Address = string(consAddr2)
    69  	keeper.SetValidatorSigningInfo(ctx, consAddr2, signingInfo)
    70  
    71  	var signingInfos []slashingtypes.ValidatorSigningInfo
    72  
    73  	keeper.IterateValidatorSigningInfos(ctx, func(consAddr sdk.ConsAddress, info slashingtypes.ValidatorSigningInfo) (stop bool) {
    74  		signingInfos = append(signingInfos, info)
    75  		return false
    76  	})
    77  
    78  	// verify all values are returned without pagination
    79  	infoResp, err := queryClient.SigningInfos(gocontext.Background(),
    80  		&slashingtypes.QuerySigningInfosRequest{Pagination: nil})
    81  	require.NoError(err)
    82  	require.Equal(signingInfos, infoResp.Info)
    83  
    84  	infoResp, err = queryClient.SigningInfos(gocontext.Background(),
    85  		&slashingtypes.QuerySigningInfosRequest{Pagination: &query.PageRequest{Limit: 1, CountTotal: true}})
    86  	require.NoError(err)
    87  	require.Len(infoResp.Info, 1)
    88  	require.Equal(signingInfos[0], infoResp.Info[0])
    89  	require.NotNil(infoResp.Pagination.NextKey)
    90  	require.Equal(uint64(2), infoResp.Pagination.Total)
    91  }