github.com/cosmos/cosmos-sdk@v0.50.10/x/staking/keeper/keeper_test.go (about) 1 package keeper_test 2 3 import ( 4 "testing" 5 6 cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" 7 cmttime "github.com/cometbft/cometbft/types/time" 8 "github.com/golang/mock/gomock" 9 "github.com/stretchr/testify/suite" 10 11 "cosmossdk.io/math" 12 storetypes "cosmossdk.io/store/types" 13 14 "github.com/cosmos/cosmos-sdk/baseapp" 15 "github.com/cosmos/cosmos-sdk/codec/address" 16 "github.com/cosmos/cosmos-sdk/runtime" 17 "github.com/cosmos/cosmos-sdk/testutil" 18 simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" 19 sdk "github.com/cosmos/cosmos-sdk/types" 20 moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" 21 authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" 22 govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" 23 stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" 24 stakingtestutil "github.com/cosmos/cosmos-sdk/x/staking/testutil" 25 stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" 26 ) 27 28 var ( 29 bondedAcc = authtypes.NewEmptyModuleAccount(stakingtypes.BondedPoolName) 30 notBondedAcc = authtypes.NewEmptyModuleAccount(stakingtypes.NotBondedPoolName) 31 PKs = simtestutil.CreateTestPubKeys(500) 32 ) 33 34 type KeeperTestSuite struct { 35 suite.Suite 36 37 ctx sdk.Context 38 stakingKeeper *stakingkeeper.Keeper 39 bankKeeper *stakingtestutil.MockBankKeeper 40 accountKeeper *stakingtestutil.MockAccountKeeper 41 queryClient stakingtypes.QueryClient 42 msgServer stakingtypes.MsgServer 43 } 44 45 func (s *KeeperTestSuite) SetupTest() { 46 require := s.Require() 47 key := storetypes.NewKVStoreKey(stakingtypes.StoreKey) 48 storeService := runtime.NewKVStoreService(key) 49 testCtx := testutil.DefaultContextWithDB(s.T(), key, storetypes.NewTransientStoreKey("transient_test")) 50 ctx := testCtx.Ctx.WithBlockHeader(cmtproto.Header{Time: cmttime.Now()}) 51 encCfg := moduletestutil.MakeTestEncodingConfig() 52 53 ctrl := gomock.NewController(s.T()) 54 accountKeeper := stakingtestutil.NewMockAccountKeeper(ctrl) 55 accountKeeper.EXPECT().GetModuleAddress(stakingtypes.BondedPoolName).Return(bondedAcc.GetAddress()) 56 accountKeeper.EXPECT().GetModuleAddress(stakingtypes.NotBondedPoolName).Return(notBondedAcc.GetAddress()) 57 accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() 58 59 bankKeeper := stakingtestutil.NewMockBankKeeper(ctrl) 60 61 keeper := stakingkeeper.NewKeeper( 62 encCfg.Codec, 63 storeService, 64 accountKeeper, 65 bankKeeper, 66 authtypes.NewModuleAddress(govtypes.ModuleName).String(), 67 address.NewBech32Codec("cosmosvaloper"), 68 address.NewBech32Codec("cosmosvalcons"), 69 ) 70 require.NoError(keeper.SetParams(ctx, stakingtypes.DefaultParams())) 71 72 s.ctx = ctx 73 s.stakingKeeper = keeper 74 s.bankKeeper = bankKeeper 75 s.accountKeeper = accountKeeper 76 77 stakingtypes.RegisterInterfaces(encCfg.InterfaceRegistry) 78 queryHelper := baseapp.NewQueryServerTestHelper(ctx, encCfg.InterfaceRegistry) 79 stakingtypes.RegisterQueryServer(queryHelper, stakingkeeper.Querier{Keeper: keeper}) 80 s.queryClient = stakingtypes.NewQueryClient(queryHelper) 81 s.msgServer = stakingkeeper.NewMsgServerImpl(keeper) 82 } 83 84 func (s *KeeperTestSuite) TestParams() { 85 ctx, keeper := s.ctx, s.stakingKeeper 86 require := s.Require() 87 88 expParams := stakingtypes.DefaultParams() 89 // check that the empty keeper loads the default 90 resParams, err := keeper.GetParams(ctx) 91 require.NoError(err) 92 require.Equal(expParams, resParams) 93 94 expParams.MaxValidators = 555 95 expParams.MaxEntries = 111 96 require.NoError(keeper.SetParams(ctx, expParams)) 97 resParams, err = keeper.GetParams(ctx) 98 require.NoError(err) 99 require.True(expParams.Equal(resParams)) 100 } 101 102 func (s *KeeperTestSuite) TestLastTotalPower() { 103 ctx, keeper := s.ctx, s.stakingKeeper 104 require := s.Require() 105 106 expTotalPower := math.NewInt(10 ^ 9) 107 require.NoError(keeper.SetLastTotalPower(ctx, expTotalPower)) 108 resTotalPower, err := keeper.GetLastTotalPower(ctx) 109 require.NoError(err) 110 require.True(expTotalPower.Equal(resTotalPower)) 111 } 112 113 func TestKeeperTestSuite(t *testing.T) { 114 suite.Run(t, new(KeeperTestSuite)) 115 }