53 lines
1.5 KiB
Go
53 lines
1.5 KiB
Go
package keeper_test
|
|
|
|
import (
|
|
sdkmath "cosmossdk.io/math"
|
|
"cosmossdk.io/x/staking/testutil"
|
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
)
|
|
|
|
// tests Jail, Unjail
|
|
func (s *KeeperTestSuite) TestRevocation() {
|
|
ctx, keeper := s.ctx, s.stakingKeeper
|
|
require := s.Require()
|
|
|
|
valAddr := sdk.ValAddress(PKs[0].Address().Bytes())
|
|
consAddr := sdk.ConsAddress(PKs[0].Address())
|
|
validator := testutil.NewValidator(s.T(), valAddr, PKs[0])
|
|
|
|
// initial state
|
|
require.NoError(keeper.SetValidator(ctx, validator))
|
|
require.NoError(keeper.SetValidatorByConsAddr(ctx, validator))
|
|
val, err := keeper.GetValidator(ctx, valAddr)
|
|
require.NoError(err)
|
|
require.False(val.IsJailed())
|
|
|
|
// test jail
|
|
require.NoError(keeper.Jail(ctx, consAddr))
|
|
val, err = keeper.GetValidator(ctx, valAddr)
|
|
require.NoError(err)
|
|
require.True(val.IsJailed())
|
|
|
|
// test unjail
|
|
require.NoError(keeper.Unjail(ctx, consAddr))
|
|
val, err = keeper.GetValidator(ctx, valAddr)
|
|
require.NoError(err)
|
|
require.False(val.IsJailed())
|
|
}
|
|
|
|
// tests Slash at a future height (must error)
|
|
func (s *KeeperTestSuite) TestSlashAtFutureHeight() {
|
|
ctx, keeper := s.ctx, s.stakingKeeper
|
|
require := s.Require()
|
|
|
|
consAddr := sdk.ConsAddress(PKs[0].Address())
|
|
validator := testutil.NewValidator(s.T(), sdk.ValAddress(PKs[0].Address().Bytes()), PKs[0])
|
|
require.NoError(keeper.SetValidator(ctx, validator))
|
|
require.NoError(keeper.SetValidatorByConsAddr(ctx, validator))
|
|
|
|
fraction := sdkmath.LegacyNewDecWithPrec(5, 1)
|
|
_, err := keeper.Slash(ctx, consAddr, 1, 10, fraction)
|
|
require.Error(err)
|
|
}
|