aboutsummaryrefslogtreecommitdiffstats
path: root/test/unit/keyrings/simple-test.js
diff options
context:
space:
mode:
authorDan Finlay <dan@danfinlay.com>2017-02-22 06:25:47 +0800
committerDan Finlay <dan@danfinlay.com>2017-02-22 06:25:47 +0800
commit0584988688a471698e9b3ad05cb0597f0270ea9e (patch)
treebdcbb009636dcdea67abcc28238023dd8bf7e882 /test/unit/keyrings/simple-test.js
parent29f07238f443007a03c968349af4d3fca7e10522 (diff)
downloadtangerine-wallet-browser-0584988688a471698e9b3ad05cb0597f0270ea9e.tar.gz
tangerine-wallet-browser-0584988688a471698e9b3ad05cb0597f0270ea9e.tar.zst
tangerine-wallet-browser-0584988688a471698e9b3ad05cb0597f0270ea9e.zip
Move sigUtil and keyrings to external modules
These external modules now have their own test coverage and build enforcement. This allowed me to somewhat more easily add good tests around our personalSign strategy (held now in [eth-sig-util](https://github.com/flyswatter/eth-sig-util), and allow each of the keyrings to import that, etc.
Diffstat (limited to 'test/unit/keyrings/simple-test.js')
-rw-r--r--test/unit/keyrings/simple-test.js149
1 files changed, 0 insertions, 149 deletions
diff --git a/test/unit/keyrings/simple-test.js b/test/unit/keyrings/simple-test.js
deleted file mode 100644
index ba7dd448a..000000000
--- a/test/unit/keyrings/simple-test.js
+++ /dev/null
@@ -1,149 +0,0 @@
-const assert = require('assert')
-const extend = require('xtend')
-const Web3 = require('web3')
-const web3 = new Web3()
-const ethUtil = require('ethereumjs-util')
-const SimpleKeyring = require('../../../app/scripts/keyrings/simple')
-const TYPE_STR = 'Simple Key Pair'
-
-// Sample account:
-const privKeyHex = 'b8a9c05beeedb25df85f8d641538cbffedf67216048de9c678ee26260eb91952'
-
-describe('simple-keyring', function() {
-
- let keyring
- beforeEach(function() {
- keyring = new SimpleKeyring()
- })
-
- describe('Keyring.type', function() {
- it('is a class property that returns the type string.', function() {
- const type = SimpleKeyring.type
- assert.equal(type, TYPE_STR)
- })
- })
-
- describe('#type', function() {
- it('returns the correct value', function() {
- const type = keyring.type
- assert.equal(type, TYPE_STR)
- })
- })
-
- describe('#serialize empty wallets.', function() {
- it('serializes an empty array', function(done) {
- keyring.serialize()
- .then((output) => {
- assert.deepEqual(output, [])
- done()
- })
- })
- })
-
- describe('#deserialize a private key', function() {
- it('serializes what it deserializes', function() {
- keyring.deserialize([privKeyHex])
- .then(() => {
- assert.equal(keyring.wallets.length, 1, 'has one wallet')
- const serialized = keyring.serialize()
- assert.equal(serialized[0], privKeyHex)
- })
- })
- })
-
- describe('#signMessage', function() {
- const address = '0x9858e7d8b79fc3e6d989636721584498926da38a'
- const message = '0x879a053d4800c6354e76c7985a865d2922c82fb5b3f4577b2fe08b998954f2e0'
- const privateKey = '0x7dd98753d7b4394095de7d176c58128e2ed6ee600abe97c9f6d9fd65015d9b18'
- const expectedResult = '0x28fcb6768e5110144a55b2e6ce9d1ea5a58103033632d272d2b5cf506906f7941a00b539383fd872109633d8c71c404e13dba87bc84166ee31b0e36061a69e161c'
-
- it('passes the dennis test', function(done) {
- keyring.deserialize([ privateKey ])
- .then(() => {
- return keyring.signMessage(address, message)
- })
- .then((result) => {
- assert.equal(result, expectedResult)
- done()
- })
- })
-
- it('reliably can decode messages it signs', function (done) {
-
- const message = 'hello there!'
- const msgHashHex = web3.sha3(message)
- let address
- let addresses = []
-
- keyring.deserialize([ privateKey ])
- .then(() => {
- keyring.addAccounts(9)
- })
- .then(() => {
- return keyring.getAccounts()
- })
- .then((addrs) => {
- addresses = addrs
- return Promise.all(addresses.map((address) => {
- return keyring.signMessage(address, msgHashHex)
- }))
- })
- .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()
- })
- })
- })
-
- describe('#addAccounts', function() {
- describe('with no arguments', function() {
- it('creates a single wallet', function() {
- keyring.addAccounts()
- .then(() => {
- assert.equal(keyring.wallets.length, 1)
- })
- })
- })
-
- describe('with a numeric argument', function() {
- it('creates that number of wallets', function() {
- keyring.addAccounts(3)
- .then(() => {
- assert.equal(keyring.wallets.length, 3)
- })
- })
- })
- })
-
- describe('#getAccounts', function() {
- it('calls getAddress on each wallet', function(done) {
-
- // Push a mock wallet
- const desiredOutput = '0x18a3462427bcc9133bb46e88bcbe39cd7ef0e761'
- keyring.wallets.push({
- getAddress() {
- return ethUtil.toBuffer(desiredOutput)
- }
- })
-
- keyring.getAccounts()
- .then((output) => {
- assert.equal(output[0], desiredOutput)
- assert.equal(output.length, 1)
- done()
- })
- })
- })
-})