github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/genaccounts/legacy/v0_36/migrate_test.go (about) 1 package v0_36 2 3 import ( 4 "testing" 5 6 "github.com/fibonacci-chain/fbc/libs/tendermint/crypto" 7 "github.com/fibonacci-chain/fbc/libs/tendermint/crypto/secp256k1" 8 9 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 10 v034distr "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/distribution/legacy/v0_34" 11 v034accounts "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/genaccounts/legacy/v0_34" 12 v034gov "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/gov/legacy/v0_34" 13 v034staking "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/staking/legacy/v0_34" 14 15 "github.com/stretchr/testify/require" 16 ) 17 18 var ( 19 priv = secp256k1.GenPrivKey() 20 addr = types.AccAddress(priv.PubKey().Address()) 21 depositedCoinsAccAddr = types.AccAddress(crypto.AddressHash([]byte("govDepositedCoins"))) 22 burnedDepositCoinsAccAddr = types.AccAddress(crypto.AddressHash([]byte("govBurnedDepositCoins"))) 23 24 coins = types.Coins{types.NewInt64Coin(types.DefaultBondDenom, 10)} 25 halfCoins = types.Coins{types.NewInt64Coin(types.DefaultBondDenom, 5)} 26 27 accountDeposited = v034accounts.GenesisAccount{ 28 Address: depositedCoinsAccAddr, 29 Coins: coins, 30 Sequence: 1, 31 AccountNumber: 1, 32 33 OriginalVesting: coins, 34 DelegatedFree: coins, 35 DelegatedVesting: coins, 36 StartTime: 0, 37 EndTime: 0, 38 } 39 40 accountBurned = v034accounts.GenesisAccount{ 41 Address: burnedDepositCoinsAccAddr, 42 Coins: coins, 43 Sequence: 2, 44 AccountNumber: 2, 45 46 OriginalVesting: coins, 47 DelegatedFree: coins, 48 DelegatedVesting: coins, 49 StartTime: 0, 50 EndTime: 0, 51 } 52 53 deposit = v034gov.DepositWithMetadata{ 54 ProposalID: 1, 55 Deposit: v034gov.Deposit{ 56 ProposalID: 1, 57 Depositor: addr, 58 Amount: coins, 59 }, 60 } 61 ) 62 63 func TestMigrateEmptyRecord(t *testing.T) { 64 65 type args struct { 66 accounts v034accounts.GenesisState 67 deposits []v034gov.DepositWithMetadata 68 } 69 tests := []struct { 70 name string 71 args args 72 }{ 73 {"No Accounts", args{v034accounts.GenesisState{}, []v034gov.DepositWithMetadata{}}}, 74 {"Deposited account", args{v034accounts.GenesisState{accountDeposited}, []v034gov.DepositWithMetadata{deposit}}}, 75 {"Burned account", args{v034accounts.GenesisState{accountBurned}, []v034gov.DepositWithMetadata{}}}, 76 {"Burned and deposited accounts", args{v034accounts.GenesisState{accountDeposited, accountBurned}, []v034gov.DepositWithMetadata{deposit}}}, 77 } 78 for _, tt := range tests { 79 tt := tt 80 t.Run(tt.name, func(t *testing.T) { 81 require.NotPanics(t, func() { 82 Migrate( 83 tt.args.accounts, 84 types.Coins{}, 85 types.DecCoins{}, 86 tt.args.deposits, 87 v034staking.Validators{}, 88 []v034staking.UnbondingDelegation{}, 89 []v034distr.ValidatorOutstandingRewardsRecord{}, 90 types.DefaultBondDenom, 91 v034distr.ModuleName, 92 v034gov.ModuleName, 93 ) 94 }) 95 }) 96 } 97 } 98 99 func TestMigrateWrongDeposit(t *testing.T) { 100 require.Panics(t, func() { 101 Migrate( 102 v034accounts.GenesisState{ 103 accountDeposited, 104 accountBurned, 105 }, 106 types.Coins{}, 107 types.DecCoins{}, 108 []v034gov.DepositWithMetadata{ 109 { 110 ProposalID: 1, 111 Deposit: v034gov.Deposit{ 112 ProposalID: 1, 113 Depositor: addr, 114 Amount: halfCoins, 115 }, 116 }, 117 }, 118 v034staking.Validators{}, 119 []v034staking.UnbondingDelegation{}, 120 []v034distr.ValidatorOutstandingRewardsRecord{}, 121 types.DefaultBondDenom, 122 v034distr.ModuleName, 123 v034gov.ModuleName, 124 ) 125 }) 126 }