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  }