Fix clearing of account cache on vault restore

feature/default_network_editable
Dan Finlay 8 years ago
parent 784856532c
commit c3d1404e72
  1. 10
      app/scripts/lib/idStore.js
  2. 14
      test/unit/idStore-test.js

@ -51,6 +51,7 @@ IdentityStore.prototype.createNewVault = function (password, entropy, cb) {
this.configManager.setData({})
}
this.purgeCache()
this._createVault(password, null, entropy, (err) => {
if (err) return cb(err)
@ -59,7 +60,6 @@ IdentityStore.prototype.createNewVault = function (password, entropy, cb) {
this.configManager.setShowSeedWords(true)
var seedWords = this._idmgmt.getSeed()
cb(null, seedWords)
})
}
@ -72,6 +72,8 @@ IdentityStore.prototype.recoverSeed = function (cb) {
}
IdentityStore.prototype.recoverFromSeed = function (password, seed, cb) {
this.purgeCache()
this._createVault(password, seed, null, (err) => {
if (err) return cb(err)
@ -500,8 +502,10 @@ IdentityStore.prototype._createIdMgmt = function (derivedKey) {
}
IdentityStore.prototype.purgeCache = function () {
this._getAddresses().forEach((address) => {
this._ethStore.del(ethUtil.addHexPrefix(address))
this._currentState.identities = {}
var accounts = Object.keys(this._ethStore._currentState.accounts)
accounts.forEach((address) => {
this._ethStore.removeAccount(address)
})
}

@ -63,7 +63,7 @@ describe('IdentityStore', function() {
const salt = 'lightwalletSalt'
let password = 'secret!'
let accounts = []
let accounts = {}
let idStore
var assertions = [
@ -99,25 +99,22 @@ describe('IdentityStore', function() {
idStore = new IdentityStore({
configManager: configManagerGen(),
ethStore: {
addAccount(acct) { accounts.push(ethUtil.addHexPrefix(acct)) },
addAccount(acct) { accounts[acct] = acct},
del(acct) { delete accounts[acct] },
},
})
})
beforeEach(function() {
accounts = []
})
it('should enforce seed compliance with TestRPC', function (done) {
this.timeout(10000)
const tests = assertions.map((assertion) => {
return function (cb) {
accounts = []
idStore.recoverFromSeed(password, assertion.seed, (err) => {
assert.ifError(err)
var received = accounts[0].toLowerCase()
var expected = assertion.account.toLowerCase()
var received = accounts[expected].toLowerCase()
assert.equal(received, expected)
idStore.tryPassword(password, function (err) {
@ -127,6 +124,7 @@ describe('IdentityStore', function() {
idStore.submitPassword(password, function(err, account) {
assert.ifError(err)
assert.equal(account, expected)
assert.equal(Object.keys(idStore._getAddresses()).length, 1, 'only one account on restore')
cb()
})
})

Loading…
Cancel
Save