diff options
author | Felix Lange <fjl@users.noreply.github.com> | 2018-01-16 22:42:41 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-16 22:42:41 +0800 |
commit | f08cd94fb755471cb78091af99ef7026afb392f3 (patch) | |
tree | dbcb5f01698b4fe13d5b79ab369056fcfefada90 /cmd/ethkey/message_test.go | |
parent | 216e584899ed522088419438c9c605a20b5dc9ae (diff) | |
download | go-tangerine-f08cd94fb755471cb78091af99ef7026afb392f3.tar go-tangerine-f08cd94fb755471cb78091af99ef7026afb392f3.tar.gz go-tangerine-f08cd94fb755471cb78091af99ef7026afb392f3.tar.bz2 go-tangerine-f08cd94fb755471cb78091af99ef7026afb392f3.tar.lz go-tangerine-f08cd94fb755471cb78091af99ef7026afb392f3.tar.xz go-tangerine-f08cd94fb755471cb78091af99ef7026afb392f3.tar.zst go-tangerine-f08cd94fb755471cb78091af99ef7026afb392f3.zip |
cmd/ethkey: fix formatting, review nits (#15807)
This commit:
- Adds a --msgfile option to read the message to sign from a file
instead of command line argument.
- Adds a unit test for signing subcommands.
- Removes some weird whitespace in the code.
Diffstat (limited to 'cmd/ethkey/message_test.go')
-rw-r--r-- | cmd/ethkey/message_test.go | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/cmd/ethkey/message_test.go b/cmd/ethkey/message_test.go new file mode 100644 index 000000000..fb16f03d0 --- /dev/null +++ b/cmd/ethkey/message_test.go @@ -0,0 +1,70 @@ +// Copyright 2017 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 main + +import ( + "io/ioutil" + "os" + "path/filepath" + "testing" +) + +func TestMessageSignVerify(t *testing.T) { + tmpdir, err := ioutil.TempDir("", "ethkey-test") + if err != nil { + t.Fatal("Can't create temporary directory:", err) + } + defer os.RemoveAll(tmpdir) + + keyfile := filepath.Join(tmpdir, "the-keyfile") + message := "test message" + + // Create the key. + generate := runEthkey(t, "generate", keyfile) + generate.Expect(` +!! Unsupported terminal, password will be echoed. +Passphrase: {{.InputLine "foobar"}} +Repeat passphrase: {{.InputLine "foobar"}} +`) + _, matches := generate.ExpectRegexp(`Address: (0x[0-9a-fA-F]{40})\n`) + address := matches[1] + generate.ExpectExit() + + // Sign a message. + sign := runEthkey(t, "signmessage", keyfile, message) + sign.Expect(` +!! Unsupported terminal, password will be echoed. +Passphrase: {{.InputLine "foobar"}} +`) + _, matches = sign.ExpectRegexp(`Signature: ([0-9a-f]+)\n`) + signature := matches[1] + sign.ExpectExit() + + // Verify the message. + verify := runEthkey(t, "verifymessage", address, signature, message) + _, matches = verify.ExpectRegexp(` +Signature verification successful! +Recovered public key: [0-9a-f]+ +Recovered address: (0x[0-9a-fA-F]{40}) +`) + recovered := matches[1] + verify.ExpectExit() + + if recovered != address { + t.Error("recovered address doesn't match generated key") + } +} |