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  }