github.com/Finschia/finschia-sdk@v0.48.1/simapp/genesis_account_test.go (about)

     1  package simapp_test
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/Finschia/finschia-sdk/crypto/keys/secp256k1"
     8  	"github.com/Finschia/finschia-sdk/simapp"
     9  	sdk "github.com/Finschia/finschia-sdk/types"
    10  	authtypes "github.com/Finschia/finschia-sdk/x/auth/types"
    11  
    12  	"github.com/Finschia/ostracon/crypto"
    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, pubkey, 0, 0)
    24  
    25  	testCases := []struct {
    26  		name    string
    27  		sga     simapp.SimGenesisAccount
    28  		wantErr bool
    29  	}{
    30  		{
    31  			"valid basic account",
    32  			simapp.SimGenesisAccount{
    33  				BaseAccount: baseAcc,
    34  			},
    35  			false,
    36  		},
    37  		{
    38  			"invalid basic account with mismatching address/pubkey",
    39  			simapp.SimGenesisAccount{
    40  				BaseAccount: authtypes.NewBaseAccount(addr, secp256k1.GenPrivKey().PubKey(), 0, 0),
    41  			},
    42  			true,
    43  		},
    44  		{
    45  			"valid basic account with module name",
    46  			simapp.SimGenesisAccount{
    47  				BaseAccount: authtypes.NewBaseAccount(sdk.AccAddress(crypto.AddressHash([]byte("testmod"))), nil, 0, 0),
    48  				ModuleName:  "testmod",
    49  			},
    50  			false,
    51  		},
    52  		{
    53  			"valid basic account with invalid module name/pubkey pair",
    54  			simapp.SimGenesisAccount{
    55  				BaseAccount: baseAcc,
    56  				ModuleName:  "testmod",
    57  			},
    58  			true,
    59  		},
    60  		{
    61  			"valid basic account with valid vesting attributes",
    62  			simapp.SimGenesisAccount{
    63  				BaseAccount:     baseAcc,
    64  				OriginalVesting: coins,
    65  				StartTime:       vestingStart.Unix(),
    66  				EndTime:         vestingStart.Add(1 * time.Hour).Unix(),
    67  			},
    68  			false,
    69  		},
    70  		{
    71  			"valid basic account with invalid vesting end time",
    72  			simapp.SimGenesisAccount{
    73  				BaseAccount:     baseAcc,
    74  				OriginalVesting: coins,
    75  				StartTime:       vestingStart.Add(2 * time.Hour).Unix(),
    76  				EndTime:         vestingStart.Add(1 * time.Hour).Unix(),
    77  			},
    78  			true,
    79  		},
    80  	}
    81  
    82  	for _, tc := range testCases {
    83  		tc := tc
    84  		t.Run(tc.name, func(t *testing.T) {
    85  			require.Equal(t, tc.wantErr, tc.sga.Validate() != nil)
    86  		})
    87  	}
    88  }