github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/tm2/pkg/crypto/keys/client/delete_test.go (about) 1 package client 2 3 import ( 4 "strings" 5 "testing" 6 7 "github.com/gnolang/gno/tm2/pkg/commands" 8 "github.com/gnolang/gno/tm2/pkg/crypto/keys" 9 "github.com/gnolang/gno/tm2/pkg/testutils" 10 "github.com/stretchr/testify/assert" 11 "github.com/stretchr/testify/require" 12 ) 13 14 const ( 15 testMnemonic = "equip will roof matter pink blind book anxiety banner elbow sun young" 16 ) 17 18 func Test_execDelete(t *testing.T) { 19 t.Parallel() 20 21 // make new test dir 22 kbHome, kbCleanUp := testutils.NewTestCaseDir(t) 23 defer kbCleanUp() 24 25 // initialize test options 26 cfg := &DeleteCfg{ 27 RootCfg: &BaseCfg{ 28 BaseOptions: BaseOptions{ 29 Home: kbHome, 30 InsecurePasswordStdin: true, 31 }, 32 }, 33 } 34 35 io := commands.NewTestIO() 36 37 fakeKeyName1 := "deleteApp_Key1" 38 fakeKeyName2 := "deleteApp_Key2" 39 40 // Add test accounts to keybase. 41 kb, err := keys.NewKeyBaseFromDir(kbHome) 42 assert.NoError(t, err) 43 44 _, err = kb.CreateAccount(fakeKeyName1, testMnemonic, "", "", 0, 0) 45 assert.NoError(t, err) 46 47 _, err = kb.CreateAccount(fakeKeyName2, testMnemonic, "", "", 0, 1) 48 assert.NoError(t, err) 49 50 // test: Key not found 51 args := []string{"blah"} 52 err = execDelete(cfg, args, nil) 53 require.Error(t, err) 54 require.Equal(t, err.Error(), "Key blah not found") 55 56 // test: User confirmation missing 57 args = []string{fakeKeyName1} 58 io.SetIn(strings.NewReader("")) 59 err = execDelete(cfg, args, io) 60 require.Error(t, err) 61 require.Equal(t, err.Error(), "EOF") 62 63 { 64 _, err = kb.GetByName(fakeKeyName1) 65 require.NoError(t, err) 66 67 // Now there is a blank password followed by a confirmation. 68 args := []string{fakeKeyName1} 69 io.SetIn(strings.NewReader("\ny\n")) 70 err = execDelete(cfg, args, io) 71 require.NoError(t, err) 72 73 _, err = kb.GetByName(fakeKeyName1) 74 require.Error(t, err) // Key1 is gone 75 } 76 77 // Set config yes = true 78 cfg = &DeleteCfg{ 79 RootCfg: &BaseCfg{ 80 BaseOptions: BaseOptions{ 81 Home: kbHome, 82 InsecurePasswordStdin: true, 83 }, 84 }, 85 Yes: true, 86 } 87 88 _, err = kb.GetByName(fakeKeyName2) 89 require.NoError(t, err) 90 91 // Run again with blank password followed by eof. 92 args = []string{fakeKeyName2} 93 io.SetIn(strings.NewReader("\n")) 94 err = execDelete(cfg, args, io) 95 require.NoError(t, err) 96 _, err = kb.GetByName(fakeKeyName2) 97 require.Error(t, err) // Key2 is gone 98 99 // TODO: Write another case for !keys.Local 100 }