You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
419 lines
11 KiB
419 lines
11 KiB
import assert from 'assert'
|
|
import migration39 from '../../../app/scripts/migrations/039'
|
|
|
|
describe('migration #39', () => {
|
|
it('should update the version metadata', (done) => {
|
|
const oldStorage = {
|
|
'meta': {
|
|
'version': 38,
|
|
},
|
|
'data': {},
|
|
}
|
|
|
|
migration39.migrate(oldStorage)
|
|
.then((newStorage) => {
|
|
assert.deepEqual(newStorage.meta, {
|
|
'version': 39,
|
|
})
|
|
done()
|
|
})
|
|
.catch(done)
|
|
})
|
|
|
|
it('should update old DAI token symbol to SAI in tokens', (done) => {
|
|
const oldStorage = {
|
|
'meta': {},
|
|
'data': {
|
|
'PreferencesController': {
|
|
'tokens': [{
|
|
'address': '0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359',
|
|
'decimals': 18,
|
|
'symbol': 'DAI',
|
|
}, {
|
|
'address': '0x0d8775f648430679a709e98d2b0cb6250d2887ef',
|
|
'symbol': 'BAT',
|
|
'decimals': 18,
|
|
}, {
|
|
'address': '0x617b3f8050a0bd94b6b1da02b4384ee5b4df13f4',
|
|
'symbol': 'META',
|
|
'decimals': 18,
|
|
}],
|
|
},
|
|
},
|
|
}
|
|
|
|
migration39.migrate(oldStorage)
|
|
.then((newStorage) => {
|
|
assert.deepEqual(newStorage.data.PreferencesController, {
|
|
'tokens': [{
|
|
'address': '0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359',
|
|
'decimals': 18,
|
|
'symbol': 'SAI',
|
|
}, {
|
|
'address': '0x0d8775f648430679a709e98d2b0cb6250d2887ef',
|
|
'symbol': 'BAT',
|
|
'decimals': 18,
|
|
}, {
|
|
'address': '0x617b3f8050a0bd94b6b1da02b4384ee5b4df13f4',
|
|
'symbol': 'META',
|
|
'decimals': 18,
|
|
}],
|
|
})
|
|
done()
|
|
})
|
|
.catch(done)
|
|
})
|
|
|
|
it('should update old DAI token symbol to SAI in accountTokens', (done) => {
|
|
const oldStorage = {
|
|
'meta': {},
|
|
'data': {
|
|
'PreferencesController': {
|
|
'accountTokens': {
|
|
'0x7250739de134d33ec7ab1ee592711e15098c9d2d': {
|
|
'mainnet': [
|
|
{
|
|
'address': '0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359',
|
|
'decimals': 18,
|
|
'symbol': 'DAI',
|
|
},
|
|
],
|
|
},
|
|
'0x8e5d75d60224ea0c33d0041e75de68b1c3cb6dd5': {
|
|
'mainnet': [],
|
|
'rinkeby': [],
|
|
},
|
|
'0x8e5d75d60224ea0c33d1041e75de68b1c3cb6dd5': {},
|
|
'0xb3958fb96c8201486ae20be1d5c9f58083df343a': {
|
|
'mainnet': [
|
|
{
|
|
'address': '0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359',
|
|
'decimals': 18,
|
|
'symbol': 'DAI',
|
|
},
|
|
{
|
|
'address': '0x0d8775f648430679a709e98d2b0cb6250d2887ef',
|
|
'decimals': 18,
|
|
'symbol': 'BAT',
|
|
},
|
|
{
|
|
'address': '0x617b3f8050a0bd94b6b1da02b4384ee5b4df13f4',
|
|
'decimals': 18,
|
|
'symbol': 'META',
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
migration39.migrate(oldStorage)
|
|
.then((newStorage) => {
|
|
assert.deepEqual(newStorage.data.PreferencesController, {
|
|
'accountTokens': {
|
|
'0x7250739de134d33ec7ab1ee592711e15098c9d2d': {
|
|
'mainnet': [
|
|
{
|
|
'address': '0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359',
|
|
'decimals': 18,
|
|
'symbol': 'SAI',
|
|
},
|
|
],
|
|
},
|
|
'0x8e5d75d60224ea0c33d0041e75de68b1c3cb6dd5': {
|
|
'mainnet': [],
|
|
'rinkeby': [],
|
|
},
|
|
'0x8e5d75d60224ea0c33d1041e75de68b1c3cb6dd5': {},
|
|
'0xb3958fb96c8201486ae20be1d5c9f58083df343a': {
|
|
'mainnet': [
|
|
{
|
|
'address': '0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359',
|
|
'decimals': 18,
|
|
'symbol': 'SAI',
|
|
},
|
|
{
|
|
'address': '0x0d8775f648430679a709e98d2b0cb6250d2887ef',
|
|
'decimals': 18,
|
|
'symbol': 'BAT',
|
|
},
|
|
{
|
|
'address': '0x617b3f8050a0bd94b6b1da02b4384ee5b4df13f4',
|
|
'decimals': 18,
|
|
'symbol': 'META',
|
|
},
|
|
],
|
|
},
|
|
},
|
|
})
|
|
done()
|
|
})
|
|
.catch(done)
|
|
})
|
|
|
|
it('should NOT change any state if accountTokens is not an object', (done) => {
|
|
const oldStorage = {
|
|
'meta': {},
|
|
'data': {
|
|
'PreferencesController': {
|
|
'accountTokens': [],
|
|
},
|
|
},
|
|
}
|
|
|
|
migration39.migrate(oldStorage)
|
|
.then((newStorage) => {
|
|
assert.deepEqual(newStorage.data, oldStorage.data)
|
|
done()
|
|
})
|
|
.catch(done)
|
|
})
|
|
|
|
it('should NOT change any state if accountTokens is an object with invalid values', (done) => {
|
|
const oldStorage = {
|
|
'meta': {},
|
|
'data': {
|
|
'PreferencesController': {
|
|
'accountTokens': {
|
|
'0x7250739de134d33ec7ab1ee592711e15098c9d2d': [
|
|
{
|
|
'address': '0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359',
|
|
'decimals': 18,
|
|
'symbol': 'DAI',
|
|
},
|
|
],
|
|
'0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359': null,
|
|
'0x8e5d75d60224ea0c33d0041e75de68b1c3cb6dd5': {
|
|
'mainnet': [
|
|
null,
|
|
undefined,
|
|
[],
|
|
42,
|
|
],
|
|
'rinkeby': null,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
migration39.migrate(oldStorage)
|
|
.then((newStorage) => {
|
|
assert.deepEqual(newStorage.data, oldStorage.data)
|
|
done()
|
|
})
|
|
.catch(done)
|
|
})
|
|
|
|
it('should NOT change any state if accountTokens includes the new DAI token', (done) => {
|
|
const oldStorage = {
|
|
'meta': {},
|
|
'data': {
|
|
'PreferencesController': {
|
|
'accountTokens': {
|
|
'0x7250739de134d33ec7ab1ee592711e15098c9d2d': {
|
|
'mainnet': [
|
|
{
|
|
'address': '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
|
'decimals': 18,
|
|
'symbol': 'DAI',
|
|
},
|
|
],
|
|
},
|
|
'0x8e5d75d60224ea0c33d0041e75de68b1c3cb6dd5': {
|
|
'mainnet': [],
|
|
'rinkeby': [],
|
|
},
|
|
'0x8e5d75d60224ea0c33d1041e75de68b1c3cb6dd5': {},
|
|
'0xb3958fb96c8201486ae20be1d5c9f58083df343a': {
|
|
'mainnet': [
|
|
{
|
|
'address': '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
|
'decimals': 18,
|
|
'symbol': 'DAI',
|
|
},
|
|
{
|
|
'address': '0x0d8775f648430679a709e98d2b0cb6250d2887ef',
|
|
'decimals': 18,
|
|
'symbol': 'BAT',
|
|
},
|
|
{
|
|
'address': '0x617b3f8050a0bd94b6b1da02b4384ee5b4df13f4',
|
|
'decimals': 18,
|
|
'symbol': 'META',
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
migration39.migrate(oldStorage)
|
|
.then((newStorage) => {
|
|
assert.deepEqual(newStorage.data, oldStorage.data)
|
|
done()
|
|
})
|
|
.catch(done)
|
|
})
|
|
|
|
it('should NOT change any state if tokens includes the new DAI token', (done) => {
|
|
const oldStorage = {
|
|
'meta': {},
|
|
'data': {
|
|
'PreferencesController': {
|
|
'tokens': [{
|
|
'address': '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
|
'symbol': 'DAI',
|
|
'decimals': 18,
|
|
}, {
|
|
'address': '0x617b3f8050a0bd94b6b1da02b4384ee5b4df13f4',
|
|
'symbol': 'META',
|
|
'decimals': 18,
|
|
}],
|
|
},
|
|
},
|
|
}
|
|
|
|
migration39.migrate(oldStorage)
|
|
.then((newStorage) => {
|
|
assert.deepEqual(newStorage.data, oldStorage.data)
|
|
done()
|
|
})
|
|
.catch(done)
|
|
})
|
|
|
|
it('should NOT change any state if tokens does not include DAI', (done) => {
|
|
const oldStorage = {
|
|
'meta': {},
|
|
'data': {
|
|
'PreferencesController': {
|
|
'tokens': [{
|
|
'address': '0x0d8775f648430679a709e98d2b0cb6250d2887ef',
|
|
'symbol': 'BAT',
|
|
'decimals': 18,
|
|
}, {
|
|
'address': '0x617b3f8050a0bd94b6b1da02b4384ee5b4df13f4',
|
|
'symbol': 'META',
|
|
'decimals': 18,
|
|
}],
|
|
},
|
|
},
|
|
}
|
|
|
|
migration39.migrate(oldStorage)
|
|
.then((newStorage) => {
|
|
assert.deepEqual(newStorage.data, oldStorage.data)
|
|
done()
|
|
})
|
|
.catch(done)
|
|
})
|
|
|
|
it('should NOT change any state if a tokens property has invalid entries', (done) => {
|
|
const oldStorage = {
|
|
'meta': {},
|
|
'data': {
|
|
'PreferencesController': {
|
|
'tokens': [
|
|
null,
|
|
[],
|
|
undefined,
|
|
42,
|
|
],
|
|
},
|
|
},
|
|
}
|
|
|
|
migration39.migrate(oldStorage)
|
|
.then((newStorage) => {
|
|
assert.deepEqual(newStorage.data, oldStorage.data)
|
|
done()
|
|
})
|
|
.catch(done)
|
|
})
|
|
|
|
it('should NOT change any state if a tokens property is not an array', (done) => {
|
|
const oldStorage = {
|
|
'meta': {},
|
|
'data': {
|
|
'PreferencesController': {
|
|
'tokens': {},
|
|
},
|
|
},
|
|
}
|
|
|
|
migration39.migrate(oldStorage)
|
|
.then((newStorage) => {
|
|
assert.deepEqual(newStorage.data, oldStorage.data)
|
|
done()
|
|
})
|
|
.catch(done)
|
|
})
|
|
|
|
it('should NOT change any state if a tokens property is null', (done) => {
|
|
const oldStorage = {
|
|
'meta': {},
|
|
'data': {
|
|
'PreferencesController': {
|
|
'tokens': null,
|
|
},
|
|
},
|
|
}
|
|
|
|
migration39.migrate(oldStorage)
|
|
.then((newStorage) => {
|
|
assert.deepEqual(newStorage.data, oldStorage.data)
|
|
done()
|
|
})
|
|
.catch(done)
|
|
})
|
|
|
|
it('should NOT change any state if a tokens property is missing', (done) => {
|
|
const oldStorage = {
|
|
'meta': {},
|
|
'data': {
|
|
'PreferencesController': {
|
|
},
|
|
},
|
|
}
|
|
|
|
migration39.migrate(oldStorage)
|
|
.then((newStorage) => {
|
|
assert.deepEqual(newStorage.data, oldStorage.data)
|
|
done()
|
|
})
|
|
.catch(done)
|
|
})
|
|
|
|
it('should NOT change any state if a accountTokens property is missing', (done) => {
|
|
const oldStorage = {
|
|
'meta': {},
|
|
'data': {
|
|
'PreferencesController': {
|
|
},
|
|
},
|
|
}
|
|
|
|
migration39.migrate(oldStorage)
|
|
.then((newStorage) => {
|
|
assert.deepEqual(newStorage.data, oldStorage.data)
|
|
done()
|
|
})
|
|
.catch(done)
|
|
})
|
|
|
|
it('should NOT change any state if PreferencesController is missing', (done) => {
|
|
const oldStorage = {
|
|
'meta': {},
|
|
'data': {},
|
|
}
|
|
|
|
migration39.migrate(oldStorage)
|
|
.then((newStorage) => {
|
|
assert.deepEqual(newStorage.data, oldStorage.data)
|
|
done()
|
|
})
|
|
.catch(done)
|
|
})
|
|
})
|
|
|