From 97b8410b3001a45249244b5a236d31e1975154a2 Mon Sep 17 00:00:00 2001
From: Dan Finlay <dan@danfinlay.com>
Date: Mon, 13 Feb 2017 21:29:22 -0800
Subject: Verify messages in a loop

---
 test/unit/keyrings/simple-test.js | 52 +++++++++++++++++++--------------------
 1 file changed, 25 insertions(+), 27 deletions(-)

(limited to 'test/unit/keyrings/simple-test.js')

diff --git a/test/unit/keyrings/simple-test.js b/test/unit/keyrings/simple-test.js
index c09695b4c..ba7dd448a 100644
--- a/test/unit/keyrings/simple-test.js
+++ b/test/unit/keyrings/simple-test.js
@@ -71,41 +71,39 @@ describe('simple-keyring', function() {
     it('reliably can decode messages it signs', function (done) {
 
       const message = 'hello there!'
-      let address, msgHashHex
+      const msgHashHex = web3.sha3(message)
+      let address
+      let addresses = []
 
       keyring.deserialize([ privateKey ])
+      .then(() => {
+        keyring.addAccounts(9)
+      })
       .then(() => {
         return keyring.getAccounts()
       })
-      .then((addresses) => {
-        address = addresses[0]
-        msgHashHex = web3.sha3(message)
-        return keyring.signMessage(address, msgHashHex)
+      .then((addrs) => {
+        addresses = addrs
+        return Promise.all(addresses.map((address) => {
+          return keyring.signMessage(address, msgHashHex)
+        }))
       })
-      .then((sgn) => {
-        var r = ethUtil.toBuffer(sgn.slice(0,66))
-        var s = ethUtil.toBuffer('0x' + sgn.slice(66,130))
-        var v = ethUtil.bufferToInt(ethUtil.toBuffer('0x' + sgn.slice(130,132)))
-        var m = ethUtil.toBuffer(msgHashHex)
-        console.dir({ r, s, v, m })
-        var pub = ethUtil.ecrecover(m, v, r, s)
-        var adr = '0x' + ethUtil.pubToAddress(pub).toString('hex')
-
-        /*
-        var sgn = ethUtil.stripHexPrefix(signature)
-        var r = ethUtil.toBuffer(sgn.slice(0,64))
-        var s = ethUtil.toBuffer(sgn.slice(64,128))
-        var v = parseInt(sgn.slice(128,130)) + 27
-        var msgHashBuffer = ethUtil.toBuffer(msgHashHex)
-        var pub = ethUtil.ecrecover(msgHashBuffer, v, r, s)
-        var adr = '0x' + ethUtil.pubToAddress(pub).toString('hex')
-        */
-        assert.equal(adr, address, 'recovers address from signature correctly')
+      .then((signatures) => {
+
+        signatures.forEach((sgn, index) => {
+          const address = addresses[index]
+
+          var r = ethUtil.toBuffer(sgn.slice(0,66))
+          var s = ethUtil.toBuffer('0x' + sgn.slice(66,130))
+          var v = ethUtil.bufferToInt(ethUtil.toBuffer('0x' + sgn.slice(130,132)))
+          var m = ethUtil.toBuffer(msgHashHex)
+          var pub = ethUtil.ecrecover(m, v, r, s)
+          var adr = '0x' + ethUtil.pubToAddress(pub).toString('hex')
+
+          assert.equal(adr, address, 'recovers address from signature correctly')
+        })
         done()
       })
-      .catch((reason) => {
-        console.dir(reason)
-      })
     })
   })
 
-- 
cgit v1.2.3