aboutsummaryrefslogtreecommitdiffstats
path: root/test/integration
diff options
context:
space:
mode:
authorDan Finlay <dan@danfinlay.com>2016-12-22 09:21:10 +0800
committerDan Finlay <dan@danfinlay.com>2016-12-22 09:21:10 +0800
commitebeaf3b3d6cf79e2e0f251b9b2da765f0fe6d0e1 (patch)
treed27efd999dc02b84d077847150e5815ac481d50a /test/integration
parenta3a64afdd5b2ed6bbed8c8dba5cc0f14d4a1ad99 (diff)
downloadtangerine-wallet-browser-ebeaf3b3d6cf79e2e0f251b9b2da765f0fe6d0e1.tar
tangerine-wallet-browser-ebeaf3b3d6cf79e2e0f251b9b2da765f0fe6d0e1.tar.gz
tangerine-wallet-browser-ebeaf3b3d6cf79e2e0f251b9b2da765f0fe6d0e1.tar.bz2
tangerine-wallet-browser-ebeaf3b3d6cf79e2e0f251b9b2da765f0fe6d0e1.tar.lz
tangerine-wallet-browser-ebeaf3b3d6cf79e2e0f251b9b2da765f0fe6d0e1.tar.xz
tangerine-wallet-browser-ebeaf3b3d6cf79e2e0f251b9b2da765f0fe6d0e1.tar.zst
tangerine-wallet-browser-ebeaf3b3d6cf79e2e0f251b9b2da765f0fe6d0e1.zip
Restructured migration
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.
Diffstat (limited to 'test/integration')
-rw-r--r--test/integration/lib/first-time.js2
-rw-r--r--test/integration/lib/idStore-migrator-test.js74
-rw-r--r--test/integration/lib/keyring-controller-test.js122
3 files changed, 75 insertions, 123 deletions
diff --git a/test/integration/lib/first-time.js b/test/integration/lib/first-time.js
index 12c573db1..1811ccbd4 100644
--- a/test/integration/lib/first-time.js
+++ b/test/integration/lib/first-time.js
@@ -79,7 +79,7 @@ QUnit.test('agree to terms', function (assert) {
var createButton = app.find('button.primary')[0]
createButton.click()
- return wait(1500)
+ return wait(1000)
}).then(function() {
var detail = app.find('.account-detail-section')[0]
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()
+ })
+})
+
diff --git a/test/integration/lib/keyring-controller-test.js b/test/integration/lib/keyring-controller-test.js
deleted file mode 100644
index 4673e65c2..000000000
--- a/test/integration/lib/keyring-controller-test.js
+++ /dev/null
@@ -1,122 +0,0 @@
-var KeyringController = require('../../../app/scripts/keyring-controller')
-var ConfigManager = require('../../../app/scripts/lib/config-manager')
-
-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 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.keyringController = new KeyringController({
- configManager: this.configManager,
- getNetwork: () => { return '2' },
- })
-
- this.ethStore = {
- addAccount: () => {},
- removeAccount: () => {},
- }
-
- this.keyringController.setStore(this.ethStore)
- }
-})
-
-QUnit.test('keyringController:isInitialized', function (assert) {
- assert.ok(this.keyringController.getState().isInitialized)
-})
-
-QUnit.test('keyringController:submitPassword', function (assert) {
- var done = assert.async()
-
- this.keyringController.submitPassword(PASSWORD)
- .then((state) => {
- assert.ok(state.identities[FIRST_ADDRESS])
- assert.ok(state.lostAccounts, 'no lost accounts')
- done()
- })
-})
-
-QUnit.test('keyringController:setLocked', function (assert) {
- var done = assert.async()
- var self = this
-
- this.keyringController.setLocked()
- .then(function() {
- assert.notOk(self.keyringController.password, 'password should be deallocated')
- assert.deepEqual(self.keyringController.keyrings, [], 'keyrings should be deallocated')
- done()
- })
- .catch((reason) => {
- assert.ifError(reason)
- 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.keyringController = new KeyringController({
- configManager: this.configManager,
- getNetwork: () => { return '2' },
- })
-
- this.ethStore = {
- addAccount: () => {},
- removeAccount: () => {},
- }
-
- this.keyringController.setStore(this.ethStore)
- }
-})
-
-QUnit.test('keyringController:isInitialized', function (assert) {
- assert.ok(this.keyringController.getState().isInitialized, 'vault is initialized')
-})
-
-QUnit.test('keyringController:submitPassword', function (assert) {
- var done = assert.async()
-
- this.keyringController.submitPassword(PASSWORD)
- .then((state) => {
- assert.ok(state.identities[BAD_STYLE_FIRST_ADDRESS])
- assert.equal(state.lostAccounts.length, 1, 'one lost account')
- assert.equal(state.lostAccounts[0], '0xe15D894BeCB0354c501AE69429B05143679F39e0'.toLowerCase())
- assert.deepEqual(this.configManager.getLostAccounts(), state.lostAccounts, 'persisted')
- done()
- })
-})
-
-QUnit.test('keyringController:setLocked', function (assert) {
- var done = assert.async()
- var self = this
-
- this.keyringController.setLocked()
- .then(function() {
- assert.notOk(self.keyringController.password, 'password should be deallocated')
- assert.deepEqual(self.keyringController.keyrings, [], 'keyrings should be deallocated')
- done()
- })
- .catch((reason) => {
- assert.ifError(reason)
- done()
- })
-})