aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/geth/accountcmd_test.go
diff options
context:
space:
mode:
authorFelix Lange <fjl@twurst.com>2016-04-02 00:10:58 +0800
committerFelix Lange <fjl@twurst.com>2016-04-12 21:59:18 +0800
commit91aaddaeb38ff25118896fb436a938d14636760b (patch)
tree4cdf271558b1038a83426c4489988fc4a6954851 /cmd/geth/accountcmd_test.go
parentea005a02950513603b7346ef39bc76dc53b82863 (diff)
downloaddexon-91aaddaeb38ff25118896fb436a938d14636760b.tar.gz
dexon-91aaddaeb38ff25118896fb436a938d14636760b.tar.zst
dexon-91aaddaeb38ff25118896fb436a938d14636760b.zip
cmd/geth: add recovery procedure for AmbiguousAddrError
Diffstat (limited to 'cmd/geth/accountcmd_test.go')
-rw-r--r--cmd/geth/accountcmd_test.go62
1 files changed, 62 insertions, 0 deletions
diff --git a/cmd/geth/accountcmd_test.go b/cmd/geth/accountcmd_test.go
index 440a0cb0b..b6abde6d8 100644
--- a/cmd/geth/accountcmd_test.go
+++ b/cmd/geth/accountcmd_test.go
@@ -228,3 +228,65 @@ func TestUnlockFlagPasswordFileWrongPassword(t *testing.T) {
Fatal: Failed to unlock account 0 (could not decrypt key with given passphrase)
`)
}
+
+func TestUnlockFlagAmbiguous(t *testing.T) {
+ store := filepath.Join("..", "..", "accounts", "testdata", "dupes")
+ geth := runGeth(t,
+ "--keystore", store, "--nat", "none", "--nodiscover", "--dev",
+ "--unlock", "f466859ead1932d743d622cb74fc058882e8648a",
+ "js", "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.
+Passphrase: {{.InputLine "foobar"}}
+Multiple key files exist for address f466859ead1932d743d622cb74fc058882e8648a:
+ {{keypath "1"}}
+ {{keypath "2"}}
+Testing your passphrase against all of them...
+Your passphrase unlocked {{keypath "1"}}
+In order to avoid this warning, you need to remove the following duplicate key files:
+ {{keypath "2"}}
+`)
+ geth.expectExit()
+
+ wantMessages := []string{
+ "Unlocked account f466859ead1932d743d622cb74fc058882e8648a",
+ }
+ for _, m := range wantMessages {
+ if strings.Index(geth.stderrText(), m) == -1 {
+ t.Errorf("stderr text does not contain %q", m)
+ }
+ }
+}
+
+func TestUnlockFlagAmbiguousWrongPassword(t *testing.T) {
+ store := filepath.Join("..", "..", "accounts", "testdata", "dupes")
+ geth := runGeth(t,
+ "--keystore", store, "--nat", "none", "--nodiscover", "--dev",
+ "--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.
+Passphrase: {{.InputLine "wrong"}}
+Multiple key files exist for address f466859ead1932d743d622cb74fc058882e8648a:
+ {{keypath "1"}}
+ {{keypath "2"}}
+Testing your passphrase against all of them...
+Fatal: None of the listed files could be unlocked.
+`)
+ geth.expectExit()
+}