mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
ebeaf3b3d6
Migrator now returns a lostAccount array that includes objects these objects include keys of address and privateKey, this allows the MetamaskController to restore the lost accounts even without customizing the idStore or the KeyringController. Also includes a patch that allows idStore to synchronously export private keys.
75 lines
2.4 KiB
JavaScript
75 lines
2.4 KiB
JavaScript
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()
|
|
})
|
|
})
|
|
|