58 lines
1.9 KiB
Go
58 lines
1.9 KiB
Go
package keeper_test
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/golang/mock/gomock"
|
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
"github.com/cosmos/cosmos-sdk/x/slashing/testutil"
|
|
"github.com/cosmos/cosmos-sdk/x/slashing/types"
|
|
)
|
|
|
|
func (s *KeeperTestSuite) TestExportAndInitGenesis() {
|
|
ctx, keeper := s.ctx, s.slashingKeeper
|
|
require := s.Require()
|
|
|
|
keeper.SetParams(ctx, testutil.TestParams())
|
|
|
|
consAddr1 := sdk.ConsAddress(sdk.AccAddress([]byte("addr1_______________")))
|
|
consAddr2 := sdk.ConsAddress(sdk.AccAddress([]byte("addr2_______________")))
|
|
|
|
info1 := types.NewValidatorSigningInfo(consAddr1, int64(4), int64(3),
|
|
time.Now().UTC().Add(100000000000), false, int64(10))
|
|
info2 := types.NewValidatorSigningInfo(consAddr2, int64(5), int64(4),
|
|
time.Now().UTC().Add(10000000000), false, int64(10))
|
|
|
|
keeper.SetValidatorSigningInfo(ctx, consAddr1, info1)
|
|
keeper.SetValidatorSigningInfo(ctx, consAddr2, info2)
|
|
genesisState := keeper.ExportGenesis(ctx)
|
|
|
|
require.Equal(genesisState.Params, testutil.TestParams())
|
|
require.Len(genesisState.SigningInfos, 2)
|
|
require.Equal(genesisState.SigningInfos[0].ValidatorSigningInfo, info1)
|
|
|
|
// Tombstone validators after genesis shouldn't effect genesis state
|
|
keeper.Tombstone(ctx, consAddr1)
|
|
keeper.Tombstone(ctx, consAddr2)
|
|
|
|
ok := keeper.IsTombstoned(ctx, consAddr1)
|
|
require.True(ok)
|
|
|
|
newInfo1, _ := keeper.GetValidatorSigningInfo(ctx, consAddr1)
|
|
require.NotEqual(info1, newInfo1)
|
|
|
|
// Initialise genesis with genesis state before tombstone
|
|
s.stakingKeeper.EXPECT().IterateValidators(ctx, gomock.Any()).Return()
|
|
keeper.InitGenesis(ctx, s.stakingKeeper, genesisState)
|
|
|
|
// Validator isTombstoned should return false as GenesisState is initialised
|
|
ok = keeper.IsTombstoned(ctx, consAddr1)
|
|
require.False(ok)
|
|
|
|
newInfo1, _ = keeper.GetValidatorSigningInfo(ctx, consAddr1)
|
|
newInfo2, _ := keeper.GetValidatorSigningInfo(ctx, consAddr2)
|
|
require.Equal(info1, newInfo1)
|
|
require.Equal(info2, newInfo2)
|
|
}
|