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  }