github.com/cosmos/cosmos-sdk@v0.50.10/testutil/key_test.go (about)

     1  package testutil
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/require"
     7  
     8  	"github.com/cosmos/cosmos-sdk/crypto/hd"
     9  	"github.com/cosmos/cosmos-sdk/crypto/keyring"
    10  	"github.com/cosmos/cosmos-sdk/types"
    11  	"github.com/cosmos/cosmos-sdk/types/module/testutil"
    12  )
    13  
    14  func TestGenerateCoinKey(t *testing.T) {
    15  	t.Parallel()
    16  	cdc := testutil.MakeTestEncodingConfig().Codec
    17  	addr, mnemonic, err := GenerateCoinKey(hd.Secp256k1, cdc)
    18  	require.NoError(t, err)
    19  
    20  	// Test creation
    21  	k, err := keyring.NewInMemory(cdc).NewAccount("xxx", mnemonic, "", hd.NewFundraiserParams(0, types.GetConfig().GetCoinType(), 0).String(), hd.Secp256k1)
    22  	require.NoError(t, err)
    23  	addr1, err := k.GetAddress()
    24  	require.NoError(t, err)
    25  	require.Equal(t, addr, addr1)
    26  }
    27  
    28  func TestGenerateSaveCoinKey(t *testing.T) {
    29  	t.Parallel()
    30  
    31  	encCfg := testutil.MakeTestEncodingConfig()
    32  	kb, err := keyring.New(t.Name(), "test", t.TempDir(), nil, encCfg.Codec)
    33  	require.NoError(t, err)
    34  
    35  	addr, mnemonic, err := GenerateSaveCoinKey(kb, "keyname", "", false, hd.Secp256k1)
    36  	require.NoError(t, err)
    37  
    38  	// Test key was actually saved
    39  	k, err := kb.Key("keyname")
    40  	require.NoError(t, err)
    41  	addr1, err := k.GetAddress()
    42  	require.NoError(t, err)
    43  	require.Equal(t, addr, addr1)
    44  
    45  	// Test in-memory recovery
    46  	k, err = keyring.NewInMemory(encCfg.Codec).NewAccount("xxx", mnemonic, "", hd.NewFundraiserParams(0, types.GetConfig().GetCoinType(), 0).String(), hd.Secp256k1)
    47  	require.NoError(t, err)
    48  	addr1, err = k.GetAddress()
    49  	require.NoError(t, err)
    50  	require.Equal(t, addr, addr1)
    51  }
    52  
    53  func TestGenerateSaveCoinKeyOverwriteFlag(t *testing.T) {
    54  	t.Parallel()
    55  
    56  	encCfg := testutil.MakeTestEncodingConfig()
    57  	kb, err := keyring.New(t.Name(), "test", t.TempDir(), nil, encCfg.Codec)
    58  	require.NoError(t, err)
    59  
    60  	keyname := "justakey"
    61  	addr1, _, err := GenerateSaveCoinKey(kb, keyname, "", false, hd.Secp256k1)
    62  	require.NoError(t, err)
    63  
    64  	// Test overwrite with overwrite=false
    65  	_, _, err = GenerateSaveCoinKey(kb, keyname, "", false, hd.Secp256k1)
    66  	require.Error(t, err)
    67  
    68  	// Test overwrite with overwrite=true
    69  	addr2, _, err := GenerateSaveCoinKey(kb, keyname, "", true, hd.Secp256k1)
    70  	require.NoError(t, err)
    71  
    72  	require.NotEqual(t, addr1, addr2)
    73  }