github.com/cosmos/cosmos-sdk@v0.50.10/x/staking/genesis_test.go (about) 1 package staking_test 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 8 "cosmossdk.io/math" 9 10 "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" 11 sdk "github.com/cosmos/cosmos-sdk/types" 12 "github.com/cosmos/cosmos-sdk/x/staking" 13 "github.com/cosmos/cosmos-sdk/x/staking/testutil" 14 "github.com/cosmos/cosmos-sdk/x/staking/types" 15 ) 16 17 func TestValidateGenesis(t *testing.T) { 18 genValidators1 := make([]types.Validator, 1, 5) 19 pk := ed25519.GenPrivKey().PubKey() 20 genValidators1[0] = testutil.NewValidator(t, sdk.ValAddress(pk.Address()), pk) 21 genValidators1[0].Tokens = math.OneInt() 22 genValidators1[0].DelegatorShares = math.LegacyOneDec() 23 24 tests := []struct { 25 name string 26 mutate func(*types.GenesisState) 27 wantErr bool 28 }{ 29 {"default", func(*types.GenesisState) {}, false}, 30 // validate genesis validators 31 {"duplicate validator", func(data *types.GenesisState) { 32 data.Validators = genValidators1 33 data.Validators = append(data.Validators, genValidators1[0]) 34 }, true}, 35 {"no delegator shares", func(data *types.GenesisState) { 36 data.Validators = genValidators1 37 data.Validators[0].DelegatorShares = math.LegacyZeroDec() 38 }, true}, 39 {"jailed and bonded validator", func(data *types.GenesisState) { 40 data.Validators = genValidators1 41 data.Validators[0].Jailed = true 42 data.Validators[0].Status = types.Bonded 43 }, true}, 44 } 45 46 for _, tt := range tests { 47 tt := tt 48 49 t.Run(tt.name, func(t *testing.T) { 50 genesisState := types.DefaultGenesisState() 51 tt.mutate(genesisState) 52 53 if tt.wantErr { 54 assert.Error(t, staking.ValidateGenesis(genesisState)) 55 } else { 56 assert.NoError(t, staking.ValidateGenesis(genesisState)) 57 } 58 }) 59 } 60 }