github.com/cosmos/cosmos-sdk@v0.50.10/client/keys/rename_test.go (about) 1 package keys 2 3 import ( 4 "context" 5 "fmt" 6 "testing" 7 8 "github.com/stretchr/testify/require" 9 10 "github.com/cosmos/cosmos-sdk/client" 11 "github.com/cosmos/cosmos-sdk/client/flags" 12 "github.com/cosmos/cosmos-sdk/crypto/hd" 13 "github.com/cosmos/cosmos-sdk/crypto/keyring" 14 "github.com/cosmos/cosmos-sdk/testutil" 15 "github.com/cosmos/cosmos-sdk/testutil/testdata" 16 sdk "github.com/cosmos/cosmos-sdk/types" 17 moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" 18 ) 19 20 func Test_runRenameCmd(t *testing.T) { 21 // temp keybase 22 kbHome := t.TempDir() 23 cmd := RenameKeyCommand() 24 cmd.Flags().AddFlagSet(Commands().PersistentFlags()) 25 mockIn := testutil.ApplyMockIODiscardOutErr(cmd) 26 27 yesF, _ := cmd.Flags().GetBool(flagYes) 28 require.False(t, yesF) 29 30 fakeKeyName1 := "runRenameCmd_Key1" 31 fakeKeyName2 := "runRenameCmd_Key2" 32 33 path := sdk.GetConfig().GetFullBIP44Path() 34 35 cdc := moduletestutil.MakeTestEncodingConfig().Codec 36 kb, err := keyring.New(sdk.KeyringServiceName(), keyring.BackendTest, kbHome, mockIn, cdc) 37 require.NoError(t, err) 38 39 // put fakeKeyName1 in keyring 40 _, err = kb.NewAccount(fakeKeyName1, testdata.TestMnemonic, "", path, hd.Secp256k1) 41 require.NoError(t, err) 42 43 clientCtx := client.Context{}. 44 WithKeyringDir(kbHome). 45 WithCodec(cdc) 46 47 ctx := context.WithValue(context.Background(), client.ClientContextKey, &clientCtx) 48 49 // rename a key 'blah' which doesnt exist 50 cmd.SetArgs([]string{"blah", "blaah", fmt.Sprintf("--%s=%s", flags.FlagKeyringDir, kbHome)}) 51 err = cmd.ExecuteContext(ctx) 52 require.Error(t, err) 53 require.EqualError(t, err, "blah.info: key not found") 54 55 // User confirmation missing 56 cmd.SetArgs([]string{ 57 fakeKeyName1, 58 "nokey", 59 fmt.Sprintf("--%s=%s", flags.FlagKeyringDir, kbHome), 60 fmt.Sprintf("--%s=%s", flags.FlagKeyringBackend, keyring.BackendTest), 61 }) 62 err = cmd.Execute() 63 require.Error(t, err) 64 require.Equal(t, "EOF", err.Error()) 65 66 oldKey, err := kb.Key(fakeKeyName1) 67 require.NoError(t, err) 68 69 // add a confirmation 70 cmd.SetArgs([]string{ 71 fakeKeyName1, 72 fakeKeyName2, 73 fmt.Sprintf("--%s=%s", flags.FlagKeyringDir, kbHome), 74 fmt.Sprintf("--%s=true", flagYes), 75 fmt.Sprintf("--%s=%s", flags.FlagKeyringBackend, keyring.BackendTest), 76 }) 77 require.NoError(t, cmd.Execute()) 78 79 // key1 is gone 80 _, err = kb.Key(fakeKeyName1) 81 require.Error(t, err) 82 83 // key2 exists now 84 renamedKey, err := kb.Key(fakeKeyName2) 85 require.NoError(t, err) 86 oldPk, err := oldKey.GetPubKey() 87 require.NoError(t, err) 88 renamedPk, err := renamedKey.GetPubKey() 89 require.NoError(t, err) 90 require.Equal(t, oldPk, renamedPk) 91 require.Equal(t, oldKey.GetType(), renamedKey.GetType()) 92 93 oldAddr, err := oldKey.GetAddress() 94 require.NoError(t, err) 95 renamedAddr, err := renamedKey.GetAddress() 96 require.NoError(t, err) 97 require.Equal(t, oldAddr, renamedAddr) 98 99 // try to rename key1 but it doesnt exist anymore so error 100 cmd.SetArgs([]string{ 101 fakeKeyName1, 102 fakeKeyName2, 103 fmt.Sprintf("--%s=%s", flags.FlagKeyringDir, kbHome), 104 fmt.Sprintf("--%s=true", flagYes), 105 fmt.Sprintf("--%s=%s", flags.FlagKeyringBackend, keyring.BackendTest), 106 }) 107 require.Error(t, cmd.Execute()) 108 }