diff options
author | Dan Finlay <flyswatter@users.noreply.github.com> | 2016-12-23 06:43:43 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-23 06:43:43 +0800 |
commit | 898e96fd6ae905932a60d60c42e2c3bddab65556 (patch) | |
tree | 23fba23503db1da05c1b397487aa71e3d9cb7d58 /test/integration/lib/idStore-migrator-test.js | |
parent | 98527c1c254fe2d438191c73053dcf3223062ef3 (diff) | |
parent | d3b2698f341e1d0dda86612cdf331e51067719c5 (diff) | |
download | tangerine-wallet-browser-898e96fd6ae905932a60d60c42e2c3bddab65556.tar tangerine-wallet-browser-898e96fd6ae905932a60d60c42e2c3bddab65556.tar.gz tangerine-wallet-browser-898e96fd6ae905932a60d60c42e2c3bddab65556.tar.bz2 tangerine-wallet-browser-898e96fd6ae905932a60d60c42e2c3bddab65556.tar.lz tangerine-wallet-browser-898e96fd6ae905932a60d60c42e2c3bddab65556.tar.xz tangerine-wallet-browser-898e96fd6ae905932a60d60c42e2c3bddab65556.tar.zst tangerine-wallet-browser-898e96fd6ae905932a60d60c42e2c3bddab65556.zip |
Merge pull request #948 from MetaMask/RecoverLostAccounts
Auto-Recover accounts lost to BIP44 derivation fix
Diffstat (limited to 'test/integration/lib/idStore-migrator-test.js')
-rw-r--r-- | test/integration/lib/idStore-migrator-test.js | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/test/integration/lib/idStore-migrator-test.js b/test/integration/lib/idStore-migrator-test.js new file mode 100644 index 000000000..338896171 --- /dev/null +++ b/test/integration/lib/idStore-migrator-test.js @@ -0,0 +1,74 @@ +var KeyringController = require('../../../app/scripts/keyring-controller') +var ConfigManager = require('../../../app/scripts/lib/config-manager') +var IdStoreMigrator = require('../../../app/scripts/lib/idStore-migrator') + +var oldStyleVault = require('../mocks/oldVault.json') +var badStyleVault = require('../mocks/badVault.json') + +var STORAGE_KEY = 'metamask-config' +var PASSWORD = '12345678' +var FIRST_ADDRESS = '0x4dd5d356c5A016A220bCD69e82e5AF680a430d00'.toLowerCase() +var SEED = 'fringe damage bounce extend tunnel afraid alert sound all soldier all dinner' + +var BAD_STYLE_FIRST_ADDRESS = '0xac39b311dceb2a4b2f5d8461c1cdaf756f4f7ae9' + +QUnit.module('Old Style Vaults', { + beforeEach: function () { + window.localStorage[STORAGE_KEY] = JSON.stringify(oldStyleVault) + + this.configManager = new ConfigManager({ + loadData: () => { return JSON.parse(window.localStorage[STORAGE_KEY]) }, + setData: (data) => { window.localStorage[STORAGE_KEY] = JSON.stringify(data) }, + }) + + this.migrator = new IdStoreMigrator({ + configManager: this.configManager, + }) + } +}) + +QUnit.test('migrator:isInitialized', function (assert) { + assert.ok(this.migrator) +}) + +QUnit.test('migrator:migratedVaultForPassword', function (assert) { + var done = assert.async() + + this.migrator.migratedVaultForPassword(PASSWORD) + .then((result) => { + const { serialized, lostAccounts } = result + assert.equal(serialized.data.mnemonic, SEED, 'seed phrase recovered') + assert.equal(lostAccounts.length, 0, 'no lost accounts') + done() + }) +}) + +QUnit.module('Old Style Vaults with bad HD seed', { + beforeEach: function () { + window.localStorage[STORAGE_KEY] = JSON.stringify(badStyleVault) + + this.configManager = new ConfigManager({ + loadData: () => { return JSON.parse(window.localStorage[STORAGE_KEY]) }, + setData: (data) => { window.localStorage[STORAGE_KEY] = JSON.stringify(data) }, + }) + + this.migrator = new IdStoreMigrator({ + configManager: this.configManager, + }) + } +}) + +QUnit.test('migrator:migratedVaultForPassword', function (assert) { + var done = assert.async() + + this.migrator.migratedVaultForPassword(PASSWORD) + .then((result) => { + const { serialized, lostAccounts } = result + + assert.equal(lostAccounts.length, 1, 'one lost account') + assert.equal(lostAccounts[0].address, '0xe15D894BeCB0354c501AE69429B05143679F39e0'.toLowerCase()) + assert.ok(lostAccounts[0].privateKey, 'private key exported') + done() + }) +}) + |