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  }