diff --git a/app/scripts/migrations/035.js b/app/scripts/migrations/035.js new file mode 100644 index 000000000..02b01f588 --- /dev/null +++ b/app/scripts/migrations/035.js @@ -0,0 +1,28 @@ +// next version number +const version = 35 + +/* + +Removes the deprecated 'seedWords' state + +*/ + +const clone = require('clone') + +module.exports = { + version, + + migrate: async function (originalVersionedData) { + const versionedData = clone(originalVersionedData) + versionedData.meta.version = version + versionedData.data = transformState(versionedData.data) + return versionedData + }, +} + +function transformState (state) { + if (state.PreferencesController && state.PreferencesController.seedWords !== undefined) { + delete state.PreferencesController.seedWords + } + return state +} diff --git a/test/unit/migrations/035-test.js b/test/unit/migrations/035-test.js new file mode 100644 index 000000000..a6ab09864 --- /dev/null +++ b/test/unit/migrations/035-test.js @@ -0,0 +1,96 @@ +const assert = require('assert') +const migration35 = require('../../../app/scripts/migrations/035') + +describe('migration #35', () => { + it('should update the version metadata', (done) => { + const oldStorage = { + meta: { + version: 34, + }, + data: {}, + } + + migration35.migrate(oldStorage) + .then((newStorage) => { + assert.deepEqual(newStorage.meta, { + 'version': 35, + }) + done() + }) + .catch(done) + }) + + it('should delete seedWords', (done) => { + const oldStorage = { + meta: {}, + data: { + PreferencesController: { + seedWords: 'seed words', + }, + }, + } + + migration35.migrate(oldStorage) + .then((newStorage) => { + assert.deepEqual(newStorage.data.PreferencesController, {}) + done() + }) + .catch(done) + }) + + it('should delete falsy seedWords', (done) => { + const oldStorage = { + meta: {}, + data: { + PreferencesController: { + seedWords: '', + }, + }, + } + + migration35.migrate(oldStorage) + .then((newStorage) => { + assert.deepEqual(newStorage.data.PreferencesController, {}) + done() + }) + .catch(done) + }) + + it('should leave state without seedWords unchanged', (done) => { + const oldStorage = { + meta: {}, + data: { + PreferencesController: { + frequentRpcListDetail: [], + currentAccountTab: 'history', + accountTokens: {}, + assetImages: {}, + tokens: [], + suggestedTokens: {}, + useBlockie: false, + knownMethodData: {}, + participateInMetaMetrics: null, + firstTimeFlowType: null, + currentLocale: 'en', + identities: {}, + lostIdentities: {}, + forgottenPassword: false, + preferences: { + useNativeCurrencyAsPrimaryCurrency: true, + }, + completedOnboarding: false, + migratedPrivacyMode: false, + metaMetricsId: null, + metaMetricsSendCount: 0, + }, + }, + } + + migration35.migrate(oldStorage) + .then((newStorage) => { + assert.deepEqual(newStorage.data, oldStorage.data) + done() + }) + .catch(done) + }) +})