github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/simapp/genesis_account_test.go (about) 1 package simapp_test 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/simapp" 8 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 9 authtypes "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth/types" 10 11 "github.com/fibonacci-chain/fbc/libs/tendermint/crypto" 12 "github.com/fibonacci-chain/fbc/libs/tendermint/crypto/secp256k1" 13 "github.com/stretchr/testify/require" 14 ) 15 16 func TestSimGenesisAccountValidate(t *testing.T) { 17 pubkey := secp256k1.GenPrivKey().PubKey() 18 addr := sdk.AccAddress(pubkey.Address()) 19 20 vestingStart := time.Now().UTC() 21 22 coins := sdk.NewCoins(sdk.NewInt64Coin("test", 1000)) 23 baseAcc := authtypes.NewBaseAccount(addr, nil, pubkey, 0, 0) 24 require.NoError(t, baseAcc.SetCoins(coins)) 25 26 testCases := []struct { 27 name string 28 sga simapp.SimGenesisAccount 29 wantErr bool 30 }{ 31 { 32 "valid basic account", 33 simapp.SimGenesisAccount{ 34 BaseAccount: baseAcc, 35 }, 36 false, 37 }, 38 { 39 "invalid basic account with mismatching address/pubkey", 40 simapp.SimGenesisAccount{ 41 BaseAccount: authtypes.NewBaseAccount(addr, nil, secp256k1.GenPrivKey().PubKey(), 0, 0), 42 }, 43 true, 44 }, 45 { 46 "valid basic account with module name", 47 simapp.SimGenesisAccount{ 48 BaseAccount: authtypes.NewBaseAccount(sdk.AccAddress(crypto.AddressHash([]byte("testmod"))), nil, nil, 0, 0), 49 ModuleName: "testmod", 50 }, 51 false, 52 }, 53 { 54 "valid basic account with invalid module name/pubkey pair", 55 simapp.SimGenesisAccount{ 56 BaseAccount: baseAcc, 57 ModuleName: "testmod", 58 }, 59 true, 60 }, 61 { 62 "valid basic account with valid vesting attributes", 63 simapp.SimGenesisAccount{ 64 BaseAccount: baseAcc, 65 OriginalVesting: coins, 66 StartTime: vestingStart.Unix(), 67 EndTime: vestingStart.Add(1 * time.Hour).Unix(), 68 }, 69 false, 70 }, 71 { 72 "valid basic account with invalid vesting end time", 73 simapp.SimGenesisAccount{ 74 BaseAccount: baseAcc, 75 OriginalVesting: coins, 76 StartTime: vestingStart.Add(2 * time.Hour).Unix(), 77 EndTime: vestingStart.Add(1 * time.Hour).Unix(), 78 }, 79 true, 80 }, 81 { 82 "valid basic account with invalid original vesting coins", 83 simapp.SimGenesisAccount{ 84 BaseAccount: baseAcc, 85 OriginalVesting: coins.Add(coins...), 86 StartTime: vestingStart.Unix(), 87 EndTime: vestingStart.Add(1 * time.Hour).Unix(), 88 }, 89 true, 90 }, 91 } 92 93 for _, tc := range testCases { 94 tc := tc 95 t.Run(tc.name, func(t *testing.T) { 96 require.Equal(t, tc.wantErr, tc.sga.Validate() != nil) 97 }) 98 } 99 }