1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00

transactions - _normalizeTxParams will now return a new object for txParams

This commit is contained in:
frankiebee 2018-04-05 12:12:02 -07:00
parent 343f0e9e80
commit c02da0f27c
2 changed files with 28 additions and 41 deletions

View File

@ -185,10 +185,10 @@ module.exports = class TransactionController extends EventEmitter {
async addUnapprovedTransaction (txParams) {
// validate
this._validateTxParams(txParams)
this._normalizeTxParams(txParams)
const normalizedTxParams = this._normalizeTxParams(txParams)
this._validateTxParams(normalizedTxParams)
// construct txMeta
let txMeta = this.txStateManager.generateTxMeta({txParams})
let txMeta = this.txStateManager.generateTxMeta({ txParams: normalizedTxParams })
this.addTx(txMeta)
this.emit('newUnapprovedTx', txMeta)
// add default tx params
@ -315,37 +315,24 @@ module.exports = class TransactionController extends EventEmitter {
//
_normalizeTxParams (txParams) {
const acceptableKeys = [
'from',
'to',
'nonce',
'value',
'data',
'gas',
'gasPrice',
]
Object.keys(txParams).forEach((key) => {
if (!acceptableKeys.includes(key)) delete txParams[key]
// functions that handle normalizing of that key in txParams
const whiteList = {
from: from => ethUtil.addHexPrefix(from).toLowerCase(),
to: to => ethUtil.addHexPrefix(txParams.to).toLowerCase(),
nonce: nonce => ethUtil.addHexPrefix(nonce),
value: value => ethUtil.addHexPrefix(value),
data: data => ethUtil.addHexPrefix(data),
gas: gas => ethUtil.addHexPrefix(gas),
gasPrice: gasPrice => ethUtil.addHexPrefix(gasPrice),
}
// apply only keys in the whiteList
const normalizedTxParams = {}
Object.keys(whiteList).forEach((key) => {
if (txParams[key]) normalizedTxParams[key] = whiteList[key](txParams[key])
})
delete txParams.chainId
if ( !txParams.to ) {
delete txParams.to
} else {
txParams.to = ethUtil.addHexPrefix(txParams.to)
}
txParams.from = ethUtil.addHexPrefix(txParams.from).toLowerCase()
if (!txParams.data) {
delete txParams.data
} else {
txParams.data = ethUtil.addHexPrefix(txParams.data)
}
if (txParams.value) txParams.value = ethUtil.addHexPrefix(txParams.value)
if (txParams.gas) txParams.gas = ethUtil.addHexPrefix(txParams.gas)
if (txParams.gasPrice) txParams.gas = ethUtil.addHexPrefix(txParams.gas)
return normalizedTxParams
}
_validateTxParams (txParams) {

View File

@ -242,17 +242,17 @@ describe('Transaction Controller', function () {
random: 'hello world',
}
txController._normalizeTxParams(txParams)
let normalizedTxParams = txController._normalizeTxParams(txParams)
assert(!normalizedTxParams.chainId, 'their should be no chainId')
assert(!normalizedTxParams.to, 'their should be no to address if null')
assert.equal(normalizedTxParams.from.slice(0, 2), '0x', 'from should be hexPrefixd')
assert.equal(normalizedTxParams.data.slice(0, 2), '0x', 'data should be hexPrefixd')
assert(!('random' in normalizedTxParams), 'their should be no random key in normalizedTxParams')
assert(!txParams.chainId, 'their should be no chainId')
assert(!txParams.to, 'their should be no to address if null')
assert.equal(txParams.from.slice(0, 2), '0x', 'from should be hexPrefixd')
assert.equal(txParams.data.slice(0, 2), '0x', 'data should be hexPrefixd')
assert(!('random' in txParams), 'their should be no random key in txParams')
txParams.to = 'a7df1beDBF813f57096dF77FCd515f0B3900e402'
txController._normalizeTxParams(txParams)
assert.equal(txParams.to.slice(0, 2), '0x', 'to should be hexPrefixd')
normalizedTxParams = txController._normalizeTxParams(txParams)
assert.equal(normalizedTxParams.to.slice(0, 2), '0x', 'to should be hexPrefixd')
})
})