From da31f4daed76a3457df12f94bbf2974621b70a0c Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Thu, 24 Mar 2016 17:51:46 -0700 Subject: [PATCH 1/9] Added basic es6 mocha test suite --- .babelrc | 1 + package.json | 7 ++++++- test/index.html | 29 ----------------------------- test/index.js | 11 +++++++++++ test/spec/test.js | 11 ----------- 5 files changed, 18 insertions(+), 41 deletions(-) create mode 100644 .babelrc delete mode 100644 test/index.html create mode 100644 test/index.js delete mode 100644 test/spec/test.js diff --git a/.babelrc b/.babelrc new file mode 100644 index 000000000..9d8d51656 --- /dev/null +++ b/.babelrc @@ -0,0 +1 @@ +{ "presets": ["es2015"] } diff --git a/package.json b/package.json index 9f700e924..fec837640 100644 --- a/package.json +++ b/package.json @@ -4,10 +4,12 @@ "public": false, "private": true, "scripts": { - "start": "gulp dev" + "start": "gulp dev", + "test": "mocha --compilers js:babel-register" }, "dependencies": { "async": "^1.5.2", + "bip39": "^2.2.0", "clone": "^1.0.2", "dnode": "^1.2.2", "end-of-stream": "^1.1.0", @@ -28,6 +30,8 @@ "xtend": "^4.0.1" }, "devDependencies": { + "babel-preset-es2015": "^6.6.0", + "babel-register": "^6.7.2", "browserify": "^13.0.0", "del": "^2.2.0", "gulp": "github:gulpjs/gulp#4.0", @@ -37,6 +41,7 @@ "gulp-watch": "^4.3.5", "jshint-stylish": "~0.1.5", "lodash.assign": "^4.0.6", + "tape": "^4.5.1", "vinyl-buffer": "^1.0.0", "vinyl-source-stream": "^1.1.0", "watchify": "^3.7.0" diff --git a/test/index.html b/test/index.html deleted file mode 100644 index 6498d5fcc..000000000 --- a/test/index.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - Mocha Spec Runner - - - -
- - - - - - - - - - - - diff --git a/test/index.js b/test/index.js new file mode 100644 index 000000000..1ff7b673a --- /dev/null +++ b/test/index.js @@ -0,0 +1,11 @@ +var assert = require('assert'); +var idStore = require('../app/scripts/lib/idStore') + +describe('IdentityStore', function() { + describe('#_createFirstWallet', function () { + it('should return the expected keystore', function () { + + assert.equal(1,1) + }); + }); +}); diff --git a/test/spec/test.js b/test/spec/test.js deleted file mode 100644 index 0fca0fb57..000000000 --- a/test/spec/test.js +++ /dev/null @@ -1,11 +0,0 @@ -(function () { - 'use strict'; - - describe('Give it some context', function () { - describe('maybe a bit more context here', function () { - it('should run here few assertions', function () { - - }); - }); - }); -})(); From 37fd45e5b70a66ff976cab0d1815374063e29d10 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Fri, 25 Mar 2016 12:41:18 -0700 Subject: [PATCH 2/9] Convert to bip44 hdTrees Added initial test just to verify we can recover the accounts we generate in this way. Still need to add compliance test to make sure this interoperates with testrpc's new mnemonic flag. --- app/scripts/lib/idStore.js | 30 ++++++++++---------- package.json | 7 +++-- test/index.js | 57 ++++++++++++++++++++++++++++++++------ 3 files changed, 70 insertions(+), 24 deletions(-) diff --git a/app/scripts/lib/idStore.js b/app/scripts/lib/idStore.js index c4547b07f..1a3e7e06f 100644 --- a/app/scripts/lib/idStore.js +++ b/app/scripts/lib/idStore.js @@ -1,6 +1,7 @@ const EventEmitter = require('events').EventEmitter const inherits = require('util').inherits const Transaction = require('ethereumjs-tx') +const Lightwallet = require('eth-lightwallet') const LightwalletKeyStore = require('eth-lightwallet').keystore const LightwalletSigner = require('eth-lightwallet').signing const async = require('async') @@ -14,23 +15,24 @@ module.exports = IdentityStore inherits(IdentityStore, EventEmitter) function IdentityStore(ethStore) { - const self = this - EventEmitter.call(self) + EventEmitter.call(this) // we just use the ethStore to auto-add accounts - self._ethStore = ethStore + this._ethStore = ethStore // lightwallet key store - self._keyStore = null + this._keyStore = null // lightwallet wrapper - self._idmgmt = null + this._idmgmt = null - self._currentState = { + this.hdPathString = "m/44'/60'/0'/0" + + this._currentState = { selectedAddress: null, identities: {}, unconfTxs: {}, } // not part of serilized metamask state - only kept in memory - self._unconfTxCbs = {} + this._unconfTxCbs = {} } // @@ -122,7 +124,6 @@ IdentityStore.prototype.addUnconfirmedTransaction = function(txParams, cb){ status: 'unconfirmed', } self._currentState.unconfTxs[txId] = txData - console.log('addUnconfirmedTransaction:', txData) // keep the cb around for after approval (requires user interaction) self._unconfTxCbs[txId] = cb @@ -201,7 +202,7 @@ IdentityStore.prototype._loadIdentities = function(){ const self = this if (!self._isUnlocked()) throw new Error('not unlocked') // get addresses and normalize address hexString - var addresses = self._keyStore.getAddresses().map(function(address){ return '0x'+address }) + var addresses = self._keyStore.getAddresses(this.hdPathString).map(function(address){ return '0x'+address }) addresses.forEach(function(address){ // // add to ethStore self._ethStore.addAccount(address) @@ -257,7 +258,7 @@ IdentityStore.prototype._createIdmgmt = function(password, seed, entropy, cb){ IdentityStore.prototype._restoreFromSeed = function(keyStore, seed, derivedKey) { keyStore = new LightwalletKeyStore(seed, derivedKey) - keyStore.generateNewAddress(derivedKey, 3) + keyStore.generateNewAddress(derivedKey, 3, hdPathString) window.localStorage['lightwallet'] = keyStore.serialize() console.log('restored from seed. saved to keystore localStorage') } @@ -268,19 +269,20 @@ IdentityStore.prototype._loadFromLocalStorage = function(serializedKeystore, der IdentityStore.prototype._createFirstWallet = function(entropy, derivedKey) { var secretSeed = LightwalletKeyStore.generateRandomSeed(entropy) - var keyStore = new LightwalletKeyStore(secretSeed, derivedKey) - keyStore.generateNewAddress(derivedKey, 3) + var keyStore = new LightwalletKeyStore(secretSeed, derivedKey, this.hdPathString) + keyStore.generateNewAddress(derivedKey, 3, this.hdPathString) window.localStorage['lightwallet'] = keyStore.serialize() console.log('saved to keystore localStorage') return keyStore } -function IdManagement( opts = { keyStore: null, derivedKey: null } ) { +function IdManagement( opts = { keyStore: null, derivedKey: null, hdPathString: null } ) { this.keyStore = opts.keyStore this.derivedKey = opts.derivedKey + this.hdPathString = opts.hdPathString this.getAddresses = function(){ - return keyStore.getAddresses().map(function(address){ return '0x'+address }) + return keyStore.getAddresses(this.hdPathString).map(function(address){ return '0x'+address }) } this.signTx = function(txParams){ diff --git a/package.json b/package.json index fec837640..da7686c0a 100644 --- a/package.json +++ b/package.json @@ -5,11 +5,11 @@ "private": true, "scripts": { "start": "gulp dev", - "test": "mocha --compilers js:babel-register" + "test": "mocha --compilers js:babel-register", + "watch": "mocha watch --compilers js:babel-register" }, "dependencies": { "async": "^1.5.2", - "bip39": "^2.2.0", "clone": "^1.0.2", "dnode": "^1.2.2", "end-of-stream": "^1.1.0", @@ -39,8 +39,11 @@ "gulp-sourcemaps": "^1.6.0", "gulp-util": "^3.0.7", "gulp-watch": "^4.3.5", + "jsdom": "^8.1.0", "jshint-stylish": "~0.1.5", "lodash.assign": "^4.0.6", + "mocha": "^2.4.5", + "mocha-jsdom": "^1.1.0", "tape": "^4.5.1", "vinyl-buffer": "^1.0.0", "vinyl-source-stream": "^1.1.0", diff --git a/test/index.js b/test/index.js index 1ff7b673a..5a8df78b8 100644 --- a/test/index.js +++ b/test/index.js @@ -1,11 +1,52 @@ -var assert = require('assert'); -var idStore = require('../app/scripts/lib/idStore') +var assert = require('assert') +var IdentityStore = require('../app/scripts/lib/idStore') +var jsdom = require('mocha-jsdom') +jsdom() describe('IdentityStore', function() { - describe('#_createFirstWallet', function () { - it('should return the expected keystore', function () { - assert.equal(1,1) - }); - }); -}); + describe('#createNewVault', function () { + let idStore + let password = 'password123' + let entropy = 'entripppppyy duuude' + let seedWords + let accounts = [] + let originalKeystore + + before(function(done) { + window.localStorage = {} // Hacking localStorage support into JSDom + + idStore = new IdentityStore({ + addAccount(acct) { accounts.push(acct) }, + }) + + idStore.createNewVault(password, entropy, (err, seeds) => { + seedWords = seeds + originalKeystore = idStore._idmgmt.keyStore + done() + }) + }) + + describe('#recoverFromSeed', function() { + + before(function() { + window.localStorage = {} // Hacking localStorage support into JSDom + accounts = [] + + idStore = new IdentityStore({ + addAccount(acct) { accounts.push(acct) }, + }) + }) + + it('should return the expected keystore', function () { + + idStore.recoverFromSeed(password, seedWords, (err) => { + assert.ifError(err) + + let newKeystore = idStore._idmgmt.keyStore + assert.equal(newKeystore, originalKeystore) + }) + }) + }) + }) +}) From a2c7ccafa6b4cdbd5f1725f7bf40189ad987cffa Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Fri, 25 Mar 2016 14:51:19 -0700 Subject: [PATCH 3/9] Implemented BIP44 compliance test. Also added the hdPath that Christian had told me to our calls to the LightWallet, but this does not seem to have made us generate the same accounts as `testrpc` yet. --- app/scripts/lib/idStore.js | 100 ++++++++++-------------- package.json | 6 +- test/helper.js | 4 + test/{index.js => unit/idStore-test.js} | 37 ++++++++- 4 files changed, 84 insertions(+), 63 deletions(-) create mode 100644 test/helper.js rename test/{index.js => unit/idStore-test.js} (53%) diff --git a/app/scripts/lib/idStore.js b/app/scripts/lib/idStore.js index 1a3e7e06f..1491effcc 100644 --- a/app/scripts/lib/idStore.js +++ b/app/scripts/lib/idStore.js @@ -53,18 +53,17 @@ IdentityStore.prototype.createNewVault = function(password, entropy, cb){ } IdentityStore.prototype.recoverFromSeed = function(password, seed, cb){ - const self = this - self._createIdmgmt(password, seed, null, function(err){ + this._createIdmgmt(password, seed, null, (err) => { if (err) return cb(err) - self._loadIdentities() - self._didUpdate() + + this._loadIdentities() + this._didUpdate() cb() }) } IdentityStore.prototype.setStore = function(store){ - const self = this - self._ethStore = store + this._ethStore = store } IdentityStore.prototype.clearSeedWordCache = function(cb) { @@ -73,46 +72,40 @@ IdentityStore.prototype.clearSeedWordCache = function(cb) { } IdentityStore.prototype.getState = function(){ - const self = this const cachedSeeds = window.localStorage['seedWords'] - return clone(extend(self._currentState, { + return clone(extend(this._currentState, { isInitialized: !!window.localStorage['lightwallet'] && !cachedSeeds, - isUnlocked: self._isUnlocked(), + isUnlocked: this._isUnlocked(), seedWords: cachedSeeds, })) } IdentityStore.prototype.getSelectedAddress = function(){ - const self = this - return self._currentState.selectedAddress + return this._currentState.selectedAddress } IdentityStore.prototype.setSelectedAddress = function(address){ - const self = this - self._currentState.selectedAddress = address - self._didUpdate() + this._currentState.selectedAddress = address + this._didUpdate() } IdentityStore.prototype.setLocked = function(cb){ - const self = this - delete self._keyStore - delete self._idmgmt + delete this._keyStore + delete this._idmgmt cb() } IdentityStore.prototype.submitPassword = function(password, cb){ - const self = this - self._tryPassword(password, function(err){ + this._tryPassword(password, (err) => { if (err) return cb(err) // load identities before returning... - self._loadIdentities() + this._loadIdentities() cb() }) } // comes from dapp via zero-client hooked-wallet provider IdentityStore.prototype.addUnconfirmedTransaction = function(txParams, cb){ - var self = this // create txData obj with parameters and meta data var time = (new Date()).getTime() @@ -123,55 +116,51 @@ IdentityStore.prototype.addUnconfirmedTransaction = function(txParams, cb){ time: time, status: 'unconfirmed', } - self._currentState.unconfTxs[txId] = txData + this._currentState.unconfTxs[txId] = txData + console.log('addUnconfirmedTransaction:', txData) // keep the cb around for after approval (requires user interaction) - self._unconfTxCbs[txId] = cb + this._unconfTxCbs[txId] = cb // signal update - self._didUpdate() + this._didUpdate() return txId } // comes from metamask ui IdentityStore.prototype.approveTransaction = function(txId, cb){ - const self = this - - var txData = self._currentState.unconfTxs[txId] + var txData = this._currentState.unconfTxs[txId] var txParams = txData.txParams - var approvalCb = self._unconfTxCbs[txId] || noop + var approvalCb = this._unconfTxCbs[txId] || noop // accept tx cb() approvalCb(null, true) // clean up - delete self._currentState.unconfTxs[txId] - delete self._unconfTxCbs[txId] - self._didUpdate() + delete this._currentState.unconfTxs[txId] + delete this._unconfTxCbs[txId] + this._didUpdate() } // comes from metamask ui IdentityStore.prototype.cancelTransaction = function(txId){ - const self = this - - var txData = self._currentState.unconfTxs[txId] - var approvalCb = self._unconfTxCbs[txId] || noop + var txData = this._currentState.unconfTxs[txId] + var approvalCb = this._unconfTxCbs[txId] || noop // reject tx approvalCb(null, false) // clean up - delete self._currentState.unconfTxs[txId] - delete self._unconfTxCbs[txId] - self._didUpdate() + delete this._currentState.unconfTxs[txId] + delete this._unconfTxCbs[txId] + this._didUpdate() } // performs the actual signing, no autofill of params IdentityStore.prototype.signTransaction = function(txParams, cb){ - const self = this try { console.log('signing tx...', txParams) - var rawTx = self._idmgmt.signTx(txParams) + var rawTx = this._idmgmt.signTx(txParams) cb(null, rawTx) } catch (err) { cb(err) @@ -183,13 +172,11 @@ IdentityStore.prototype.signTransaction = function(txParams, cb){ // IdentityStore.prototype._didUpdate = function(){ - const self = this - self.emit('update', self.getState()) + this.emit('update', this.getState()) } IdentityStore.prototype._isUnlocked = function(){ - const self = this - var result = Boolean(self._keyStore) && Boolean(self._idmgmt) + var result = Boolean(this._keyStore) && Boolean(this._idmgmt) return result } @@ -199,22 +186,21 @@ IdentityStore.prototype._cacheSeedWordsUntilConfirmed = function(seedWords) { // load identities from keyStoreet IdentityStore.prototype._loadIdentities = function(){ - const self = this - if (!self._isUnlocked()) throw new Error('not unlocked') + if (!this._isUnlocked()) throw new Error('not unlocked') // get addresses and normalize address hexString - var addresses = self._keyStore.getAddresses(this.hdPathString).map(function(address){ return '0x'+address }) - addresses.forEach(function(address){ + var addresses = this._keyStore.getAddresses(this.hdPathString).map((address) => { return '0x'+address }) + addresses.forEach((address) => { // // add to ethStore - self._ethStore.addAccount(address) + this._ethStore.addAccount(address) // add to identities var identity = { name: 'Wally', img: 'QmW6hcwYzXrNkuHrpvo58YeZvbZxUddv69ATSHY3BHpPdd', address: address, } - self._currentState.identities[address] = identity + this._currentState.identities[address] = identity }) - self._didUpdate() + this._didUpdate() } // @@ -222,8 +208,7 @@ IdentityStore.prototype._loadIdentities = function(){ // IdentityStore.prototype._tryPassword = function(password, cb){ - const self = this - self._createIdmgmt(password, null, null, cb) + this._createIdmgmt(password, null, null, cb) } IdentityStore.prototype._createIdmgmt = function(password, seed, entropy, cb){ @@ -233,7 +218,7 @@ IdentityStore.prototype._createIdmgmt = function(password, seed, entropy, cb){ var serializedKeystore = window.localStorage['lightwallet'] if (seed) { - this._restoreFromSeed(keyStore, seed, derivedKey) + keyStore = this._restoreFromSeed(seed, derivedKey) // returning user, recovering from localStorage } else if (serializedKeystore) { @@ -256,11 +241,12 @@ IdentityStore.prototype._createIdmgmt = function(password, seed, entropy, cb){ }) } -IdentityStore.prototype._restoreFromSeed = function(keyStore, seed, derivedKey) { - keyStore = new LightwalletKeyStore(seed, derivedKey) - keyStore.generateNewAddress(derivedKey, 3, hdPathString) +IdentityStore.prototype._restoreFromSeed = function(seed, derivedKey) { + var keyStore = new LightwalletKeyStore(seed, derivedKey, this.hdPathString) + keyStore.generateNewAddress(derivedKey, 3, this.hdPathString) window.localStorage['lightwallet'] = keyStore.serialize() console.log('restored from seed. saved to keystore localStorage') + return keyStore } IdentityStore.prototype._loadFromLocalStorage = function(serializedKeystore, derivedKey) { diff --git a/package.json b/package.json index da7686c0a..e31f9e09a 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "private": true, "scripts": { "start": "gulp dev", - "test": "mocha --compilers js:babel-register", - "watch": "mocha watch --compilers js:babel-register" + "test": "mocha --compilers js:babel-register --recursive", + "watch": "mocha watch --compilers js:babel-register --recursive" }, "dependencies": { "async": "^1.5.2", @@ -44,6 +44,8 @@ "lodash.assign": "^4.0.6", "mocha": "^2.4.5", "mocha-jsdom": "^1.1.0", + "mocha-sinon": "^1.1.5", + "sinon": "^1.17.3", "tape": "^4.5.1", "vinyl-buffer": "^1.0.0", "vinyl-source-stream": "^1.1.0", diff --git a/test/helper.js b/test/helper.js new file mode 100644 index 000000000..7746b90e0 --- /dev/null +++ b/test/helper.js @@ -0,0 +1,4 @@ +require('mocha-sinon')() +var jsdom = require('mocha-jsdom') +jsdom() + diff --git a/test/index.js b/test/unit/idStore-test.js similarity index 53% rename from test/index.js rename to test/unit/idStore-test.js index 5a8df78b8..4494bf505 100644 --- a/test/index.js +++ b/test/unit/idStore-test.js @@ -1,7 +1,5 @@ var assert = require('assert') -var IdentityStore = require('../app/scripts/lib/idStore') -var jsdom = require('mocha-jsdom') -jsdom() +var IdentityStore = require('../../app/scripts/lib/idStore') describe('IdentityStore', function() { @@ -38,15 +36,46 @@ describe('IdentityStore', function() { }) }) - it('should return the expected keystore', function () { + it('should return the expected keystore', function (done) { idStore.recoverFromSeed(password, seedWords, (err) => { assert.ifError(err) let newKeystore = idStore._idmgmt.keyStore assert.equal(newKeystore, originalKeystore) + done() }) }) }) }) + + describe('#recoverFromSeed BIP44 compliance', function() { + let seedWords = 'picnic injury awful upper eagle junk alert toss flower renew silly vague' + let firstAccount = '0xaceef0221414801dde7f732196b1c9d8ea60b637' + let password = 'secret!' + let accounts = [] + let idStore + + before(function() { + window.localStorage = {} // Hacking localStorage support into JSDom + + idStore = new IdentityStore({ + addAccount(acct) { + console.log(`pushing account ${acct}`) + accounts.push(acct) + }, + }) + }) + + it('should return the expected first account', function (done) { + + idStore.recoverFromSeed(password, seedWords, (err) => { + assert.ifError(err) + + let newKeystore = idStore._idmgmt.keyStore + assert.equal(accounts[0], firstAccount) + done() + }) + }) + }) }) From f05ad130c5de29f5d1e0188e109112e608aa82bb Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Fri, 25 Mar 2016 15:38:08 -0700 Subject: [PATCH 4/9] Cleaned up how we pass hdString to Lightwallet --- app/scripts/lib/idStore.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/app/scripts/lib/idStore.js b/app/scripts/lib/idStore.js index 1491effcc..2e416c8b7 100644 --- a/app/scripts/lib/idStore.js +++ b/app/scripts/lib/idStore.js @@ -218,7 +218,7 @@ IdentityStore.prototype._createIdmgmt = function(password, seed, entropy, cb){ var serializedKeystore = window.localStorage['lightwallet'] if (seed) { - keyStore = this._restoreFromSeed(seed, derivedKey) + keyStore = this._restoreFromSeed(password, seed, derivedKey) // returning user, recovering from localStorage } else if (serializedKeystore) { @@ -235,15 +235,19 @@ IdentityStore.prototype._createIdmgmt = function(password, seed, entropy, cb){ this._idmgmt = new IdManagement({ keyStore: keyStore, derivedKey: derivedKey, + hdPathSTring: this.hdPathString, }) cb() }) } -IdentityStore.prototype._restoreFromSeed = function(seed, derivedKey) { +IdentityStore.prototype._restoreFromSeed = function(password, seed, derivedKey) { var keyStore = new LightwalletKeyStore(seed, derivedKey, this.hdPathString) - keyStore.generateNewAddress(derivedKey, 3, this.hdPathString) + keyStore.addHdDerivationPath(this.hdPathString, derivedKey, {curve: 'secp256k1', purpose: 'sign'}); + keyStore.setDefaultHdDerivationPath(this.hdPathString) + + keyStore.generateNewAddress(derivedKey, 3) window.localStorage['lightwallet'] = keyStore.serialize() console.log('restored from seed. saved to keystore localStorage') return keyStore @@ -256,7 +260,10 @@ IdentityStore.prototype._loadFromLocalStorage = function(serializedKeystore, der IdentityStore.prototype._createFirstWallet = function(entropy, derivedKey) { var secretSeed = LightwalletKeyStore.generateRandomSeed(entropy) var keyStore = new LightwalletKeyStore(secretSeed, derivedKey, this.hdPathString) - keyStore.generateNewAddress(derivedKey, 3, this.hdPathString) + keyStore.addHdDerivationPath(this.hdPathString, derivedKey, {curve: 'secp256k1', purpose: 'sign'}); + keyStore.setDefaultHdDerivationPath(this.hdPathString) + + keyStore.generateNewAddress(derivedKey, 3) window.localStorage['lightwallet'] = keyStore.serialize() console.log('saved to keystore localStorage') return keyStore From 72904e7a4f2e33a38d78bc83cc245b4e536b1400 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Fri, 25 Mar 2016 15:38:20 -0700 Subject: [PATCH 5/9] Correct the bip44 test account --- test/unit/idStore-test.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/unit/idStore-test.js b/test/unit/idStore-test.js index 4494bf505..d3fabfe9d 100644 --- a/test/unit/idStore-test.js +++ b/test/unit/idStore-test.js @@ -26,13 +26,13 @@ describe('IdentityStore', function() { }) describe('#recoverFromSeed', function() { + let newAccounts = [] before(function() { window.localStorage = {} // Hacking localStorage support into JSDom - accounts = [] idStore = new IdentityStore({ - addAccount(acct) { accounts.push(acct) }, + addAccount(acct) { newAccounts.push(acct) }, }) }) @@ -42,7 +42,7 @@ describe('IdentityStore', function() { assert.ifError(err) let newKeystore = idStore._idmgmt.keyStore - assert.equal(newKeystore, originalKeystore) + assert.equal(newAccounts[0], accounts[0]) done() }) }) @@ -51,7 +51,8 @@ describe('IdentityStore', function() { describe('#recoverFromSeed BIP44 compliance', function() { let seedWords = 'picnic injury awful upper eagle junk alert toss flower renew silly vague' - let firstAccount = '0xaceef0221414801dde7f732196b1c9d8ea60b637' + let firstAccount = '0x5d8de92c205279c10e5669f797b853ccef4f739a' + let password = 'secret!' let accounts = [] let idStore @@ -61,7 +62,6 @@ describe('IdentityStore', function() { idStore = new IdentityStore({ addAccount(acct) { - console.log(`pushing account ${acct}`) accounts.push(acct) }, }) From 7fc8195cb181807ff68c7c2ca50677eb414c7210 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Fri, 25 Mar 2016 15:43:26 -0700 Subject: [PATCH 6/9] Remove broken npm script --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index e31f9e09a..6c401822b 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,7 @@ "private": true, "scripts": { "start": "gulp dev", - "test": "mocha --compilers js:babel-register --recursive", - "watch": "mocha watch --compilers js:babel-register --recursive" + "test": "mocha --compilers js:babel-register --recursive" }, "dependencies": { "async": "^1.5.2", From 16ada64b87fe915cfecdcc05be0a39df9171f702 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Fri, 25 Mar 2016 15:43:32 -0700 Subject: [PATCH 7/9] Bumped version --- app/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/manifest.json b/app/manifest.json index 0777c0c8a..1ca0f55e9 100644 --- a/app/manifest.json +++ b/app/manifest.json @@ -1,6 +1,6 @@ { "name": "__MSG_appName__", - "version": "0.15.0", + "version": "1.0.0", "manifest_version": 2, "description": "__MSG_appDescription__", "icons": { From 335a03d6506a3135ab01758a8734c60b6178cdb2 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Fri, 25 Mar 2016 15:45:23 -0700 Subject: [PATCH 8/9] Removed unused dependency --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 6c401822b..f482fd4f6 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,6 @@ "mocha-jsdom": "^1.1.0", "mocha-sinon": "^1.1.5", "sinon": "^1.17.3", - "tape": "^4.5.1", "vinyl-buffer": "^1.0.0", "vinyl-source-stream": "^1.1.0", "watchify": "^3.7.0" From 742fd7caa8599f4044d9eccc941dbfd47af81c82 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Fri, 25 Mar 2016 15:47:24 -0700 Subject: [PATCH 9/9] Remove unused reference --- app/scripts/lib/idStore.js | 1 - 1 file changed, 1 deletion(-) diff --git a/app/scripts/lib/idStore.js b/app/scripts/lib/idStore.js index 2e416c8b7..e3f2a841d 100644 --- a/app/scripts/lib/idStore.js +++ b/app/scripts/lib/idStore.js @@ -1,7 +1,6 @@ const EventEmitter = require('events').EventEmitter const inherits = require('util').inherits const Transaction = require('ethereumjs-tx') -const Lightwallet = require('eth-lightwallet') const LightwalletKeyStore = require('eth-lightwallet').keystore const LightwalletSigner = require('eth-lightwallet').signing const async = require('async')