github.com/prysmaticlabs/prysm@v1.4.4/validator/accounts/accounts_delete_test.go (about) 1 package accounts 2 3 import ( 4 "encoding/hex" 5 "os" 6 "path/filepath" 7 "strings" 8 "testing" 9 "time" 10 11 "github.com/prysmaticlabs/prysm/shared/bytesutil" 12 "github.com/prysmaticlabs/prysm/shared/testutil/assert" 13 "github.com/prysmaticlabs/prysm/shared/testutil/require" 14 "github.com/prysmaticlabs/prysm/validator/accounts/wallet" 15 "github.com/prysmaticlabs/prysm/validator/keymanager" 16 "github.com/prysmaticlabs/prysm/validator/keymanager/imported" 17 ) 18 19 func TestDeleteAccounts_Noninteractive(t *testing.T) { 20 walletDir, _, passwordFilePath := setupWalletAndPasswordsDir(t) 21 // Write a directory where we will import keys from. 22 keysDir := filepath.Join(t.TempDir(), "keysDir") 23 require.NoError(t, os.MkdirAll(keysDir, os.ModePerm)) 24 25 // Create 3 keystore files in the keys directory we can then 26 // import from in our wallet. 27 k1, _ := createKeystore(t, keysDir) 28 time.Sleep(time.Second) 29 k2, _ := createKeystore(t, keysDir) 30 time.Sleep(time.Second) 31 k3, _ := createKeystore(t, keysDir) 32 generatedPubKeys := []string{k1.Pubkey, k2.Pubkey, k3.Pubkey} 33 // Only delete keys 0 and 1. 34 deletePublicKeys := strings.Join(generatedPubKeys[0:2], ",") 35 36 // We initialize a wallet with a imported keymanager. 37 cliCtx := setupWalletCtx(t, &testWalletConfig{ 38 // Wallet configuration flags. 39 walletDir: walletDir, 40 keymanagerKind: keymanager.Imported, 41 walletPasswordFile: passwordFilePath, 42 accountPasswordFile: passwordFilePath, 43 // Flags required for ImportAccounts to work. 44 keysDir: keysDir, 45 // Flags required for DeleteAccounts to work. 46 deletePublicKeys: deletePublicKeys, 47 }) 48 w, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{ 49 WalletCfg: &wallet.Config{ 50 WalletDir: walletDir, 51 KeymanagerKind: keymanager.Imported, 52 WalletPassword: password, 53 }, 54 }) 55 require.NoError(t, err) 56 57 // We attempt to import accounts. 58 require.NoError(t, ImportAccountsCli(cliCtx)) 59 60 // We attempt to delete the accounts specified. 61 require.NoError(t, DeleteAccountCli(cliCtx)) 62 63 keymanager, err := imported.NewKeymanager( 64 cliCtx.Context, 65 &imported.SetupConfig{ 66 Wallet: w, 67 ListenForChanges: false, 68 }, 69 ) 70 require.NoError(t, err) 71 remainingAccounts, err := keymanager.FetchValidatingPublicKeys(cliCtx.Context) 72 require.NoError(t, err) 73 require.Equal(t, len(remainingAccounts), 1) 74 remainingPublicKey, err := hex.DecodeString(k3.Pubkey) 75 require.NoError(t, err) 76 assert.DeepEqual(t, remainingAccounts[0], bytesutil.ToBytes48(remainingPublicKey)) 77 }