github.com/cosmos/cosmos-sdk@v0.50.10/x/staking/keeper/slash_test.go (about) 1 package keeper_test 2 3 import ( 4 sdkmath "cosmossdk.io/math" 5 6 sdk "github.com/cosmos/cosmos-sdk/types" 7 "github.com/cosmos/cosmos-sdk/x/staking/testutil" 8 ) 9 10 // tests Jail, Unjail 11 func (s *KeeperTestSuite) TestRevocation() { 12 ctx, keeper := s.ctx, s.stakingKeeper 13 require := s.Require() 14 15 valAddr := sdk.ValAddress(PKs[0].Address().Bytes()) 16 consAddr := sdk.ConsAddress(PKs[0].Address()) 17 validator := testutil.NewValidator(s.T(), valAddr, PKs[0]) 18 19 // initial state 20 require.NoError(keeper.SetValidator(ctx, validator)) 21 require.NoError(keeper.SetValidatorByConsAddr(ctx, validator)) 22 val, err := keeper.GetValidator(ctx, valAddr) 23 require.NoError(err) 24 require.False(val.IsJailed()) 25 26 // test jail 27 require.NoError(keeper.Jail(ctx, consAddr)) 28 val, err = keeper.GetValidator(ctx, valAddr) 29 require.NoError(err) 30 require.True(val.IsJailed()) 31 32 // test unjail 33 require.NoError(keeper.Unjail(ctx, consAddr)) 34 val, err = keeper.GetValidator(ctx, valAddr) 35 require.NoError(err) 36 require.False(val.IsJailed()) 37 } 38 39 // tests Slash at a future height (must error) 40 func (s *KeeperTestSuite) TestSlashAtFutureHeight() { 41 ctx, keeper := s.ctx, s.stakingKeeper 42 require := s.Require() 43 44 consAddr := sdk.ConsAddress(PKs[0].Address()) 45 validator := testutil.NewValidator(s.T(), sdk.ValAddress(PKs[0].Address().Bytes()), PKs[0]) 46 require.NoError(keeper.SetValidator(ctx, validator)) 47 require.NoError(keeper.SetValidatorByConsAddr(ctx, validator)) 48 49 fraction := sdkmath.LegacyNewDecWithPrec(5, 1) 50 _, err := keeper.Slash(ctx, consAddr, 1, 10, fraction) 51 require.Error(err) 52 }