mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
hot-fix - migrate unaproved txParams so that the from is lowercase
This commit is contained in:
parent
457a47bf62
commit
8243824c6a
45
app/scripts/migrations/024.js
Normal file
45
app/scripts/migrations/024.js
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
|
||||||
|
const version = 24
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
This migration ensures that the from address in txParams is to lower case for
|
||||||
|
all unapproved transactions
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
const clone = require('clone')
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
version,
|
||||||
|
|
||||||
|
migrate: function (originalVersionedData) {
|
||||||
|
const versionedData = clone(originalVersionedData)
|
||||||
|
versionedData.meta.version = version
|
||||||
|
try {
|
||||||
|
const state = versionedData.data
|
||||||
|
const newState = transformState(state)
|
||||||
|
versionedData.data = newState
|
||||||
|
} catch (err) {
|
||||||
|
console.warn(`MetaMask Migration #${version}` + err.stack)
|
||||||
|
}
|
||||||
|
return Promise.resolve(versionedData)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
function transformState (state) {
|
||||||
|
const newState = state
|
||||||
|
const transactions = newState.TransactionController.transactions
|
||||||
|
|
||||||
|
newState.TransactionController.transactions = transactions.map((txMeta, _, txList) => {
|
||||||
|
if (
|
||||||
|
txMeta.status === 'unapproved' &&
|
||||||
|
txMeta.txParams &&
|
||||||
|
txMeta.txParams.from
|
||||||
|
) {
|
||||||
|
txMeta.txParams.from = txMeta.txParams.from.toLowerCase()
|
||||||
|
}
|
||||||
|
return txMeta
|
||||||
|
})
|
||||||
|
return newState
|
||||||
|
}
|
@ -34,4 +34,5 @@ module.exports = [
|
|||||||
require('./021'),
|
require('./021'),
|
||||||
require('./022'),
|
require('./022'),
|
||||||
require('./023'),
|
require('./023'),
|
||||||
|
require('./024'),
|
||||||
]
|
]
|
||||||
|
37
test/unit/migrations/024-test.js
Normal file
37
test/unit/migrations/024-test.js
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
const assert = require('assert')
|
||||||
|
const migration24 = require('../../../app/scripts/migrations/024')
|
||||||
|
const properTime = (new Date()).getTime()
|
||||||
|
const storage = {
|
||||||
|
"meta": {},
|
||||||
|
"data": {
|
||||||
|
"TransactionController": {
|
||||||
|
"transactions": [
|
||||||
|
]
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
const transactions = []
|
||||||
|
|
||||||
|
|
||||||
|
while (transactions.length <= 10) {
|
||||||
|
transactions.push({ txParams: { from: '0x8aCce2391c0d510a6c5E5d8f819a678f79b7e675' }, status: 'unapproved' })
|
||||||
|
transactions.push({ txParams: { from: '0x8aCce2391c0d510a6c5E5d8f819a678f79b7e675' }, status: 'confirmed' })
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
storage.data.TransactionController.transactions = transactions
|
||||||
|
|
||||||
|
describe('storage is migrated successfully and the txParams.from are lowercase', () => {
|
||||||
|
it('should lowercase the from for unapproved txs', (done) => {
|
||||||
|
migration24.migrate(storage)
|
||||||
|
.then((migratedData) => {
|
||||||
|
const migratedTransactions = migratedData.data.TransactionController.transactions
|
||||||
|
migratedTransactions.forEach((tx) => {
|
||||||
|
if (tx.status === 'unapproved') assert.equal(tx.txParams.from, '0x8acce2391c0d510a6c5e5d8f819a678f79b7e675')
|
||||||
|
else assert.equal(tx.txParams.from, '0x8aCce2391c0d510a6c5E5d8f819a678f79b7e675')
|
||||||
|
})
|
||||||
|
done()
|
||||||
|
}).catch(done)
|
||||||
|
})
|
||||||
|
})
|
Loading…
x
Reference in New Issue
Block a user