github.com/cosmos/cosmos-sdk@v0.50.10/client/keys/list_test.go (about) 1 package keys 2 3 import ( 4 "context" 5 "fmt" 6 "strings" 7 "testing" 8 9 "gotest.tools/v3/assert" 10 11 "github.com/cosmos/cosmos-sdk/client" 12 "github.com/cosmos/cosmos-sdk/client/flags" 13 "github.com/cosmos/cosmos-sdk/crypto/hd" 14 "github.com/cosmos/cosmos-sdk/crypto/keyring" 15 "github.com/cosmos/cosmos-sdk/testutil" 16 clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" 17 "github.com/cosmos/cosmos-sdk/testutil/testdata" 18 sdk "github.com/cosmos/cosmos-sdk/types" 19 moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" 20 ) 21 22 func cleanupKeys(t *testing.T, kb keyring.Keyring, keys ...string) func() { 23 return func() { 24 for _, k := range keys { 25 if err := kb.Delete(k); err != nil { 26 t.Log("can't delete KB key ", k, err) 27 } 28 } 29 } 30 } 31 32 func Test_runListCmd(t *testing.T) { 33 cmd := ListKeysCmd() 34 cmd.Flags().AddFlagSet(Commands().PersistentFlags()) 35 36 kbHome1 := t.TempDir() 37 kbHome2 := t.TempDir() 38 39 mockIn := testutil.ApplyMockIODiscardOutErr(cmd) 40 cdc := moduletestutil.MakeTestEncodingConfig().Codec 41 kb, err := keyring.New(sdk.KeyringServiceName(), keyring.BackendTest, kbHome2, mockIn, cdc) 42 assert.NilError(t, err) 43 44 clientCtx := client.Context{}.WithKeyring(kb) 45 ctx := context.WithValue(context.Background(), client.ClientContextKey, &clientCtx) 46 47 path := "" // sdk.GetConfig().GetFullBIP44Path() 48 _, err = kb.NewAccount("something", testdata.TestMnemonic, "", path, hd.Secp256k1) 49 assert.NilError(t, err) 50 51 t.Cleanup(cleanupKeys(t, kb, "something")) 52 53 testData := []struct { 54 name string 55 kbDir string 56 wantErr bool 57 }{ 58 {"keybase: empty", kbHome1, false}, 59 {"keybase: w/key", kbHome2, false}, 60 } 61 for _, tt := range testData { 62 tt := tt 63 t.Run(tt.name, func(t *testing.T) { 64 cmd.SetArgs([]string{ 65 fmt.Sprintf("--%s=%s", flags.FlagKeyringDir, tt.kbDir), 66 fmt.Sprintf("--%s=false", flagListNames), 67 }) 68 69 if err := cmd.ExecuteContext(ctx); (err != nil) != tt.wantErr { 70 t.Errorf("runListCmd() error = %v, wantErr %v", err, tt.wantErr) 71 } 72 73 cmd.SetArgs([]string{ 74 fmt.Sprintf("--%s=%s", flags.FlagKeyringDir, tt.kbDir), 75 fmt.Sprintf("--%s=true", flagListNames), 76 }) 77 78 if err := cmd.ExecuteContext(ctx); (err != nil) != tt.wantErr { 79 t.Errorf("runListCmd() error = %v, wantErr %v", err, tt.wantErr) 80 } 81 }) 82 } 83 } 84 85 func Test_runListKeyTypeCmd(t *testing.T) { 86 cmd := ListKeyTypesCmd() 87 88 cdc := moduletestutil.MakeTestEncodingConfig().Codec 89 kbHome := t.TempDir() 90 mockIn := testutil.ApplyMockIODiscardOutErr(cmd) 91 92 kb, err := keyring.New(sdk.KeyringServiceName(), keyring.BackendTest, kbHome, mockIn, cdc) 93 assert.NilError(t, err) 94 95 clientCtx := client.Context{}. 96 WithKeyringDir(kbHome). 97 WithKeyring(kb) 98 99 out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{}) 100 assert.NilError(t, err) 101 assert.Assert(t, strings.Contains(out.String(), string(hd.Secp256k1Type))) 102 }