github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/client/keys/add_test.go (about) 1 package keys 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/spf13/viper" 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 11 "github.com/fibonacci-chain/fbc/libs/tendermint/libs/cli" 12 13 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/flags" 14 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/crypto/keys" 15 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/tests" 16 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 17 ) 18 19 func Test_runAddCmdBasic(t *testing.T) { 20 runningUnattended := isRunningUnattended() 21 cmd := AddKeyCommand() 22 assert.NotNil(t, cmd) 23 mockIn, _, _ := tests.ApplyMockIO(cmd) 24 25 kbHome, kbCleanUp := tests.NewTestCaseDir(t) 26 assert.NotNil(t, kbHome) 27 defer kbCleanUp() 28 viper.Set(flags.FlagHome, kbHome) 29 viper.Set(flagMnemonic, "nature apology park elegant distance hello gasp dial universe nut area bunker") 30 viper.Set(cli.OutputFlag, OutputFormatText) 31 32 if runningUnattended { 33 mockIn.Reset("testpass1\ntestpass1\n") 34 } else { 35 mockIn.Reset("y\n") 36 kb, err := keys.NewKeyring(sdk.KeyringServiceName(), viper.GetString(flags.FlagKeyringBackend), kbHome, mockIn) 37 require.NoError(t, err) 38 defer func() { 39 kb.Delete("keyname1", "", false) 40 kb.Delete("keyname2", "", false) 41 }() 42 } 43 assert.NoError(t, runAddCmd(cmd, []string{"keyname1"})) 44 45 if runningUnattended { 46 mockIn.Reset("testpass1\nN\n") 47 } else { 48 mockIn.Reset("N\n") 49 } 50 assert.Error(t, runAddCmd(cmd, []string{"keyname1"})) 51 52 if runningUnattended { 53 mockIn.Reset("testpass1\nN\n") 54 } else { 55 mockIn.Reset("y\n") 56 } 57 err := runAddCmd(cmd, []string{"keyname2"}) 58 assert.NoError(t, err) 59 60 // In recovery mode 61 cmd.SetArgs([]string{ 62 "keyname6", 63 fmt.Sprintf("--%s=true", flagRecover), 64 }) 65 66 // use valid mnemonic and complete recovery key generation successfully 67 mockIn.Reset("decide praise business actor peasant farm drastic weather extend front hurt later song give verb rhythm worry fun pond reform school tumble august one\n") 68 require.NoError(t, cmd.Execute()) 69 70 // use invalid mnemonic and fail recovery key generation 71 mockIn.Reset("invalid mnemonic\n") 72 require.Error(t, cmd.Execute()) 73 74 // In interactive mode 75 cmd.SetArgs([]string{ 76 "keyname7", 77 "-i", 78 fmt.Sprintf("--%s=false", flagRecover), 79 }) 80 81 const password = "password1!" 82 83 // set password and complete interactive key generation successfully 84 mockIn.Reset("\n" + password + "\n" + password + "\n") 85 require.NoError(t, cmd.Execute()) 86 87 // passwords don't match and fail interactive key generation 88 mockIn.Reset("\n" + password + "\n" + "fail" + "\n") 89 require.Error(t, cmd.Execute()) 90 }