mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-18 18:02:24 +00:00
cmd/geth, cmd/utils: remove some code related to account mgmt
This commit is contained in:
parent
3eadab6aa1
commit
c503ac80a0
8 changed files with 32 additions and 281 deletions
1
accounts/keystore/testdata/dupes/1
vendored
1
accounts/keystore/testdata/dupes/1
vendored
|
|
@ -1 +0,0 @@
|
||||||
{"address":"f466859ead1932d743d622cb74fc058882e8648a","crypto":{"cipher":"aes-128-ctr","ciphertext":"cb664472deacb41a2e995fa7f96fe29ce744471deb8d146a0e43c7898c9ddd4d","cipherparams":{"iv":"dfd9ee70812add5f4b8f89d0811c9158"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":8,"p":16,"r":8,"salt":"0d6769bf016d45c479213990d6a08d938469c4adad8a02ce507b4a4e7b7739f1"},"mac":"bac9af994b15a45dd39669fc66f9aa8a3b9dd8c22cb16e4d8d7ea089d0f1a1a9"},"id":"472e8b3d-afb6-45b5-8111-72c89895099a","version":3}
|
|
||||||
1
accounts/keystore/testdata/dupes/2
vendored
1
accounts/keystore/testdata/dupes/2
vendored
|
|
@ -1 +0,0 @@
|
||||||
{"address":"f466859ead1932d743d622cb74fc058882e8648a","crypto":{"cipher":"aes-128-ctr","ciphertext":"cb664472deacb41a2e995fa7f96fe29ce744471deb8d146a0e43c7898c9ddd4d","cipherparams":{"iv":"dfd9ee70812add5f4b8f89d0811c9158"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":8,"p":16,"r":8,"salt":"0d6769bf016d45c479213990d6a08d938469c4adad8a02ce507b4a4e7b7739f1"},"mac":"bac9af994b15a45dd39669fc66f9aa8a3b9dd8c22cb16e4d8d7ea089d0f1a1a9"},"id":"472e8b3d-afb6-45b5-8111-72c89895099a","version":3}
|
|
||||||
1
accounts/keystore/testdata/dupes/foo
vendored
1
accounts/keystore/testdata/dupes/foo
vendored
|
|
@ -1 +0,0 @@
|
||||||
{"address":"7ef5a6135f1fd6a02593eedc869c6d41d934aef8","crypto":{"cipher":"aes-128-ctr","ciphertext":"1d0839166e7a15b9c1333fc865d69858b22df26815ccf601b28219b6192974e1","cipherparams":{"iv":"8df6caa7ff1b00c4e871f002cb7921ed"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":8,"p":16,"r":8,"salt":"e5e6ef3f4ea695f496b643ebd3f75c0aa58ef4070e90c80c5d3fb0241bf1595c"},"mac":"6d16dfde774845e4585357f24bce530528bc69f4f84e1e22880d34fa45c273e5"},"id":"950077c7-71e3-4c44-a4a1-143919141ed4","version":3}
|
|
||||||
|
|
@ -237,8 +237,10 @@ func accountCreate(ctx *cli.Context) error {
|
||||||
scryptP = keystore.LightScryptP
|
scryptP = keystore.LightScryptP
|
||||||
}
|
}
|
||||||
|
|
||||||
password := utils.GetPassPhraseWithList("Your new account is locked with a password. Please give a password. Do not forget this password.", true, 0, utils.MakePasswordList(ctx))
|
password, ok := utils.ReadPasswordFromList(ctx)
|
||||||
|
if !ok {
|
||||||
|
password = utils.GetPassPhrase("Your new account is locked with a password. Please give a password. Do not forget this password.", true)
|
||||||
|
}
|
||||||
account, err := keystore.StoreKey(keydir, password, scryptN, scryptP)
|
account, err := keystore.StoreKey(keydir, password, scryptN, scryptP)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -305,10 +307,12 @@ func importWallet(ctx *cli.Context) error {
|
||||||
if len(backends) == 0 {
|
if len(backends) == 0 {
|
||||||
utils.Fatalf("Keystore is not available")
|
utils.Fatalf("Keystore is not available")
|
||||||
}
|
}
|
||||||
|
password, ok := utils.ReadPasswordFromList(ctx)
|
||||||
|
if !ok {
|
||||||
|
password = utils.GetPassPhrase("", false)
|
||||||
|
}
|
||||||
ks := backends[0].(*keystore.KeyStore)
|
ks := backends[0].(*keystore.KeyStore)
|
||||||
passphrase := utils.GetPassPhraseWithList("", false, 0, utils.MakePasswordList(ctx))
|
acct, err := ks.ImportPreSaleKey(keyJSON, password)
|
||||||
|
|
||||||
acct, err := ks.ImportPreSaleKey(keyJSON, passphrase)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
utils.Fatalf("%v", err)
|
utils.Fatalf("%v", err)
|
||||||
}
|
}
|
||||||
|
|
@ -331,9 +335,11 @@ func accountImport(ctx *cli.Context) error {
|
||||||
utils.Fatalf("Keystore is not available")
|
utils.Fatalf("Keystore is not available")
|
||||||
}
|
}
|
||||||
ks := backends[0].(*keystore.KeyStore)
|
ks := backends[0].(*keystore.KeyStore)
|
||||||
passphrase := utils.GetPassPhraseWithList("Your new account is locked with a password. Please give a password. Do not forget this password.", true, 0, utils.MakePasswordList(ctx))
|
password, ok := utils.ReadPasswordFromList(ctx)
|
||||||
|
if !ok {
|
||||||
acct, err := ks.ImportECDSA(key, passphrase)
|
password = utils.GetPassPhrase("Your new account is locked with a password. Please give a password. Do not forget this password.", true)
|
||||||
|
}
|
||||||
|
acct, err := ks.ImportECDSA(key, password)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
utils.Fatalf("Could not create the account: %v", err)
|
utils.Fatalf("Could not create the account: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,6 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/cespare/cp"
|
"github.com/cespare/cp"
|
||||||
|
|
@ -171,12 +170,12 @@ func TestAccountUpdate(t *testing.T) {
|
||||||
"f466859ead1932d743d622cb74fc058882e8648a")
|
"f466859ead1932d743d622cb74fc058882e8648a")
|
||||||
defer geth.ExpectExit()
|
defer geth.ExpectExit()
|
||||||
geth.Expect(`
|
geth.Expect(`
|
||||||
Unlocking account f466859ead1932d743d622cb74fc058882e8648a | Attempt 1/3
|
Please give a NEW password. Do not forget this password.
|
||||||
!! Unsupported terminal, password will be echoed.
|
!! Unsupported terminal, password will be echoed.
|
||||||
Password: {{.InputLine "foobar"}}
|
|
||||||
Please give a new password. Do not forget this password.
|
|
||||||
Password: {{.InputLine "foobar2"}}
|
Password: {{.InputLine "foobar2"}}
|
||||||
Repeat password: {{.InputLine "foobar2"}}
|
Repeat password: {{.InputLine "foobar2"}}
|
||||||
|
Please provide the OLD password for account f466859ead1932d743d622cb74fc058882e8648a | Attempt 1/3
|
||||||
|
Password: {{.InputLine "foobar"}}
|
||||||
`)
|
`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -206,172 +205,3 @@ Password: {{.InputLine "wrong"}}
|
||||||
Fatal: could not decrypt key with given password
|
Fatal: could not decrypt key with given password
|
||||||
`)
|
`)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUnlockFlag(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
geth := runMinimalGeth(t, "--port", "0", "--ipcdisable", "--datadir", tmpDatadirWithKeystore(t),
|
|
||||||
"--unlock", "f466859ead1932d743d622cb74fc058882e8648a", "console", "--exec", "loadScript('testdata/empty.js')")
|
|
||||||
geth.Expect(`
|
|
||||||
Unlocking account f466859ead1932d743d622cb74fc058882e8648a | Attempt 1/3
|
|
||||||
!! Unsupported terminal, password will be echoed.
|
|
||||||
Password: {{.InputLine "foobar"}}
|
|
||||||
undefined
|
|
||||||
`)
|
|
||||||
geth.ExpectExit()
|
|
||||||
|
|
||||||
wantMessages := []string{
|
|
||||||
"Unlocked account",
|
|
||||||
"=0xf466859eAD1932D743d622CB74FC058882E8648A",
|
|
||||||
}
|
|
||||||
for _, m := range wantMessages {
|
|
||||||
if !strings.Contains(geth.StderrText(), m) {
|
|
||||||
t.Errorf("stderr text does not contain %q", m)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestUnlockFlagWrongPassword(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
geth := runMinimalGeth(t, "--port", "0", "--ipcdisable", "--datadir", tmpDatadirWithKeystore(t),
|
|
||||||
"--unlock", "f466859ead1932d743d622cb74fc058882e8648a", "console", "--exec", "loadScript('testdata/empty.js')")
|
|
||||||
|
|
||||||
defer geth.ExpectExit()
|
|
||||||
geth.Expect(`
|
|
||||||
Unlocking account f466859ead1932d743d622cb74fc058882e8648a | Attempt 1/3
|
|
||||||
!! Unsupported terminal, password will be echoed.
|
|
||||||
Password: {{.InputLine "wrong1"}}
|
|
||||||
Unlocking account f466859ead1932d743d622cb74fc058882e8648a | Attempt 2/3
|
|
||||||
Password: {{.InputLine "wrong2"}}
|
|
||||||
Unlocking account f466859ead1932d743d622cb74fc058882e8648a | Attempt 3/3
|
|
||||||
Password: {{.InputLine "wrong3"}}
|
|
||||||
Fatal: Failed to unlock account f466859ead1932d743d622cb74fc058882e8648a (could not decrypt key with given password)
|
|
||||||
`)
|
|
||||||
}
|
|
||||||
|
|
||||||
// https://github.com/ethereum/go-ethereum/issues/1785
|
|
||||||
func TestUnlockFlagMultiIndex(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
geth := runMinimalGeth(t, "--port", "0", "--ipcdisable", "--datadir", tmpDatadirWithKeystore(t),
|
|
||||||
"--unlock", "f466859ead1932d743d622cb74fc058882e8648a", "--unlock", "0,2", "console", "--exec", "loadScript('testdata/empty.js')")
|
|
||||||
|
|
||||||
geth.Expect(`
|
|
||||||
Unlocking account 0 | Attempt 1/3
|
|
||||||
!! Unsupported terminal, password will be echoed.
|
|
||||||
Password: {{.InputLine "foobar"}}
|
|
||||||
Unlocking account 2 | Attempt 1/3
|
|
||||||
Password: {{.InputLine "foobar"}}
|
|
||||||
undefined
|
|
||||||
`)
|
|
||||||
geth.ExpectExit()
|
|
||||||
|
|
||||||
wantMessages := []string{
|
|
||||||
"Unlocked account",
|
|
||||||
"=0x7EF5A6135f1FD6a02593eEdC869c6D41D934aef8",
|
|
||||||
"=0x289d485D9771714CCe91D3393D764E1311907ACc",
|
|
||||||
}
|
|
||||||
for _, m := range wantMessages {
|
|
||||||
if !strings.Contains(geth.StderrText(), m) {
|
|
||||||
t.Errorf("stderr text does not contain %q", m)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestUnlockFlagPasswordFile(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
geth := runMinimalGeth(t, "--port", "0", "--ipcdisable", "--datadir", tmpDatadirWithKeystore(t),
|
|
||||||
"--unlock", "f466859ead1932d743d622cb74fc058882e8648a", "--password", "testdata/passwords.txt", "--unlock", "0,2", "console", "--exec", "loadScript('testdata/empty.js')")
|
|
||||||
|
|
||||||
geth.Expect(`
|
|
||||||
undefined
|
|
||||||
`)
|
|
||||||
geth.ExpectExit()
|
|
||||||
|
|
||||||
wantMessages := []string{
|
|
||||||
"Unlocked account",
|
|
||||||
"=0x7EF5A6135f1FD6a02593eEdC869c6D41D934aef8",
|
|
||||||
"=0x289d485D9771714CCe91D3393D764E1311907ACc",
|
|
||||||
}
|
|
||||||
for _, m := range wantMessages {
|
|
||||||
if !strings.Contains(geth.StderrText(), m) {
|
|
||||||
t.Errorf("stderr text does not contain %q", m)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestUnlockFlagPasswordFileWrongPassword(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
geth := runMinimalGeth(t, "--port", "0", "--ipcdisable", "--datadir", tmpDatadirWithKeystore(t),
|
|
||||||
"--unlock", "f466859ead1932d743d622cb74fc058882e8648a", "--password",
|
|
||||||
"testdata/wrong-passwords.txt", "--unlock", "0,2")
|
|
||||||
defer geth.ExpectExit()
|
|
||||||
geth.Expect(`
|
|
||||||
Fatal: Failed to unlock account 0 (could not decrypt key with given password)
|
|
||||||
`)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestUnlockFlagAmbiguous(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
store := filepath.Join("..", "..", "accounts", "keystore", "testdata", "dupes")
|
|
||||||
geth := runMinimalGeth(t, "--port", "0", "--ipcdisable", "--datadir", tmpDatadirWithKeystore(t),
|
|
||||||
"--unlock", "f466859ead1932d743d622cb74fc058882e8648a", "--keystore",
|
|
||||||
store, "--unlock", "f466859ead1932d743d622cb74fc058882e8648a",
|
|
||||||
"console", "--exec", "loadScript('testdata/empty.js')")
|
|
||||||
defer geth.ExpectExit()
|
|
||||||
|
|
||||||
// Helper for the expect template, returns absolute keystore path.
|
|
||||||
geth.SetTemplateFunc("keypath", func(file string) string {
|
|
||||||
abs, _ := filepath.Abs(filepath.Join(store, file))
|
|
||||||
return abs
|
|
||||||
})
|
|
||||||
geth.Expect(`
|
|
||||||
Unlocking account f466859ead1932d743d622cb74fc058882e8648a | Attempt 1/3
|
|
||||||
!! Unsupported terminal, password will be echoed.
|
|
||||||
Password: {{.InputLine "foobar"}}
|
|
||||||
Multiple key files exist for address f466859ead1932d743d622cb74fc058882e8648a:
|
|
||||||
keystore://{{keypath "1"}}
|
|
||||||
keystore://{{keypath "2"}}
|
|
||||||
Testing your password against all of them...
|
|
||||||
Your password unlocked keystore://{{keypath "1"}}
|
|
||||||
In order to avoid this warning, you need to remove the following duplicate key files:
|
|
||||||
keystore://{{keypath "2"}}
|
|
||||||
undefined
|
|
||||||
`)
|
|
||||||
geth.ExpectExit()
|
|
||||||
|
|
||||||
wantMessages := []string{
|
|
||||||
"Unlocked account",
|
|
||||||
"=0xf466859eAD1932D743d622CB74FC058882E8648A",
|
|
||||||
}
|
|
||||||
for _, m := range wantMessages {
|
|
||||||
if !strings.Contains(geth.StderrText(), m) {
|
|
||||||
t.Errorf("stderr text does not contain %q", m)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestUnlockFlagAmbiguousWrongPassword(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
store := filepath.Join("..", "..", "accounts", "keystore", "testdata", "dupes")
|
|
||||||
geth := runMinimalGeth(t, "--port", "0", "--ipcdisable", "--datadir", tmpDatadirWithKeystore(t),
|
|
||||||
"--unlock", "f466859ead1932d743d622cb74fc058882e8648a", "--keystore",
|
|
||||||
store, "--unlock", "f466859ead1932d743d622cb74fc058882e8648a")
|
|
||||||
|
|
||||||
defer geth.ExpectExit()
|
|
||||||
|
|
||||||
// Helper for the expect template, returns absolute keystore path.
|
|
||||||
geth.SetTemplateFunc("keypath", func(file string) string {
|
|
||||||
abs, _ := filepath.Abs(filepath.Join(store, file))
|
|
||||||
return abs
|
|
||||||
})
|
|
||||||
geth.Expect(`
|
|
||||||
Unlocking account f466859ead1932d743d622cb74fc058882e8648a | Attempt 1/3
|
|
||||||
!! Unsupported terminal, password will be echoed.
|
|
||||||
Password: {{.InputLine "wrong"}}
|
|
||||||
Multiple key files exist for address f466859ead1932d743d622cb74fc058882e8648a:
|
|
||||||
keystore://{{keypath "1"}}
|
|
||||||
keystore://{{keypath "2"}}
|
|
||||||
Testing your password against all of them...
|
|
||||||
Fatal: None of the listed files could be unlocked.
|
|
||||||
`)
|
|
||||||
geth.ExpectExit()
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1280,22 +1280,23 @@ func setEtherbase(ctx *cli.Context, cfg *ethconfig.Config) {
|
||||||
cfg.Miner.PendingFeeRecipient = common.BytesToAddress(b)
|
cfg.Miner.PendingFeeRecipient = common.BytesToAddress(b)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MakePasswordList reads password lines from the file specified by the global --password flag.
|
// MakePasswordList reads the first line of the given file, trims line endings,
|
||||||
func MakePasswordList(ctx *cli.Context) []string {
|
// and returns the password and whether the reading was successful.
|
||||||
|
func ReadPasswordFromList(ctx *cli.Context) (string, bool) {
|
||||||
path := ctx.Path(PasswordFileFlag.Name)
|
path := ctx.Path(PasswordFileFlag.Name)
|
||||||
if path == "" {
|
if path == "" {
|
||||||
return nil
|
return "", false
|
||||||
}
|
}
|
||||||
text, err := os.ReadFile(path)
|
text, err := os.ReadFile(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
Fatalf("Failed to read password file: %v", err)
|
Fatalf("Failed to read password file: %v", err)
|
||||||
}
|
}
|
||||||
lines := strings.Split(string(text), "\n")
|
lines := strings.Split(string(text), "\n")
|
||||||
// Sanitise DOS line endings.
|
if len(lines) == 0 {
|
||||||
for i := range lines {
|
return "", false
|
||||||
lines[i] = strings.TrimRight(lines[i], "\r")
|
|
||||||
}
|
}
|
||||||
return lines
|
// Sanitise DOS line endings.
|
||||||
|
return strings.TrimRight(lines[0], "\r"), true
|
||||||
}
|
}
|
||||||
|
|
||||||
func SetP2PConfig(ctx *cli.Context, cfg *p2p.Config) {
|
func SetP2PConfig(ctx *cli.Context, cfg *p2p.Config) {
|
||||||
|
|
@ -1772,11 +1773,8 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
|
||||||
passphrase string
|
passphrase string
|
||||||
err error
|
err error
|
||||||
)
|
)
|
||||||
if list := MakePasswordList(ctx); len(list) > 0 {
|
if pw, ok := ReadPasswordFromList(ctx); ok {
|
||||||
// Just take the first value. Although the function returns a possible multiple values and
|
passphrase = pw
|
||||||
// some usages iterate through them as attempts, that doesn't make sense in this setting,
|
|
||||||
// when we're definitely concerned with only one account.
|
|
||||||
passphrase = list[0]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Unlock the developer account by local keystore.
|
// Unlock the developer account by local keystore.
|
||||||
|
|
|
||||||
|
|
@ -46,17 +46,13 @@ func GetPassPhrase(text string, confirmation bool) string {
|
||||||
return password
|
return password
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetPassPhraseWithList retrieves the password associated with an account, either fetched
|
// GetPassPhraseWithList retrieves the first password from the given list, or
|
||||||
// from a list of preloaded passphrases, or requested interactively from the user.
|
// requests one interactively from the user, using the given prompt.
|
||||||
func GetPassPhraseWithList(text string, confirmation bool, index int, passwords []string) string {
|
func GetPassPhraseWithList(text string, passwords []string) string {
|
||||||
// If a list of passwords was supplied, retrieve from them
|
// If a list of passwords was supplied, retrieve from them
|
||||||
if len(passwords) > 0 {
|
if len(passwords) > 0 {
|
||||||
if index < len(passwords) {
|
return passwords[0]
|
||||||
return passwords[index]
|
|
||||||
}
|
|
||||||
return passwords[len(passwords)-1]
|
|
||||||
}
|
}
|
||||||
// Otherwise prompt the user for the password
|
// Otherwise prompt the user for the password
|
||||||
password := GetPassPhrase(text, confirmation)
|
return GetPassPhrase(text, true)
|
||||||
return password
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,76 +0,0 @@
|
||||||
// Copyright 2020 The go-ethereum Authors
|
|
||||||
// This file is part of go-ethereum.
|
|
||||||
//
|
|
||||||
// go-ethereum is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU General Public License as published by
|
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
|
||||||
// (at your option) any later version.
|
|
||||||
//
|
|
||||||
// go-ethereum is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
// Package utils contains internal helper functions for go-ethereum commands.
|
|
||||||
package utils
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestGetPassPhraseWithList(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
type args struct {
|
|
||||||
text string
|
|
||||||
confirmation bool
|
|
||||||
index int
|
|
||||||
passwords []string
|
|
||||||
}
|
|
||||||
tests := []struct {
|
|
||||||
name string
|
|
||||||
args args
|
|
||||||
want string
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
"test1",
|
|
||||||
args{
|
|
||||||
"text1",
|
|
||||||
false,
|
|
||||||
0,
|
|
||||||
[]string{"zero", "one", "two"},
|
|
||||||
},
|
|
||||||
"zero",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"test2",
|
|
||||||
args{
|
|
||||||
"text2",
|
|
||||||
false,
|
|
||||||
5,
|
|
||||||
[]string{"zero", "one", "two"},
|
|
||||||
},
|
|
||||||
"two",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"test3",
|
|
||||||
args{
|
|
||||||
"text3",
|
|
||||||
true,
|
|
||||||
1,
|
|
||||||
[]string{"zero", "one", "two"},
|
|
||||||
},
|
|
||||||
"one",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for _, tt := range tests {
|
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
if got := GetPassPhraseWithList(tt.args.text, tt.args.confirmation, tt.args.index, tt.args.passwords); got != tt.want {
|
|
||||||
t.Errorf("GetPassPhraseWithList() = %v, want %v", got, tt.want)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in a new issue