github.com/cosmos/cosmos-sdk@v0.50.10/client/keys/delete_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_runDeleteCmd(t *testing.T) {
    21  	// Now add a temporary keybase
    22  	kbHome := t.TempDir()
    23  	cmd := DeleteKeyCommand()
    24  	cmd.Flags().AddFlagSet(Commands().PersistentFlags())
    25  	mockIn := testutil.ApplyMockIODiscardOutErr(cmd)
    26  
    27  	yesF, _ := cmd.Flags().GetBool(flagYes)
    28  	forceF, _ := cmd.Flags().GetBool(flagForce)
    29  
    30  	require.False(t, yesF)
    31  	require.False(t, forceF)
    32  
    33  	fakeKeyName1 := "runDeleteCmd_Key1"
    34  	fakeKeyName2 := "runDeleteCmd_Key2"
    35  
    36  	path := sdk.GetConfig().GetFullBIP44Path()
    37  	cdc := moduletestutil.MakeTestEncodingConfig().Codec
    38  
    39  	cmd.SetArgs([]string{"blah", fmt.Sprintf("--%s=%s", flags.FlagKeyringDir, kbHome)})
    40  	kb, err := keyring.New(sdk.KeyringServiceName(), keyring.BackendTest, kbHome, mockIn, cdc)
    41  	require.NoError(t, err)
    42  
    43  	_, err = kb.NewAccount(fakeKeyName1, testdata.TestMnemonic, "", path, hd.Secp256k1)
    44  	require.NoError(t, err)
    45  
    46  	_, _, err = kb.NewMnemonic(fakeKeyName2, keyring.English, sdk.FullFundraiserPath, keyring.DefaultBIP39Passphrase, hd.Secp256k1)
    47  	require.NoError(t, err)
    48  
    49  	clientCtx := client.Context{}.
    50  		WithKeyringDir(kbHome).
    51  		WithCodec(cdc)
    52  
    53  	ctx := context.WithValue(context.Background(), client.ClientContextKey, &clientCtx)
    54  
    55  	err = cmd.ExecuteContext(ctx)
    56  	require.Error(t, err)
    57  	require.EqualError(t, err, "blah.info: key not found")
    58  
    59  	// User confirmation missing
    60  	cmd.SetArgs([]string{
    61  		fakeKeyName1,
    62  		fmt.Sprintf("--%s=%s", flags.FlagKeyringDir, kbHome),
    63  		fmt.Sprintf("--%s=%s", flags.FlagKeyringBackend, keyring.BackendTest),
    64  	})
    65  	err = cmd.Execute()
    66  	require.Error(t, err)
    67  	require.Equal(t, "EOF", err.Error())
    68  
    69  	_, err = kb.Key(fakeKeyName1)
    70  	require.NoError(t, err)
    71  
    72  	// Now there is a confirmation
    73  	cmd.SetArgs([]string{
    74  		fakeKeyName1,
    75  		fmt.Sprintf("--%s=%s", flags.FlagKeyringDir, kbHome),
    76  		fmt.Sprintf("--%s=true", flagYes),
    77  		fmt.Sprintf("--%s=%s", flags.FlagKeyringBackend, keyring.BackendTest),
    78  	})
    79  	require.NoError(t, cmd.Execute())
    80  
    81  	_, err = kb.Key(fakeKeyName1)
    82  	require.Error(t, err) // Key1 is gone
    83  
    84  	_, err = kb.Key(fakeKeyName2)
    85  	require.NoError(t, err)
    86  
    87  	cmd.SetArgs([]string{
    88  		fakeKeyName2,
    89  		fmt.Sprintf("--%s=%s", flags.FlagKeyringDir, kbHome),
    90  		fmt.Sprintf("--%s=true", flagYes),
    91  		fmt.Sprintf("--%s=%s", flags.FlagKeyringBackend, keyring.BackendTest),
    92  	})
    93  	require.NoError(t, cmd.Execute())
    94  
    95  	_, err = kb.Key(fakeKeyName2)
    96  	require.Error(t, err) // Key2 is gone
    97  }