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

View File

@ -242,17 +242,17 @@ describe('Transaction Controller', function () {
random: 'hello world', 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' txParams.to = 'a7df1beDBF813f57096dF77FCd515f0B3900e402'
normalizedTxParams = txController._normalizeTxParams(txParams)
txController._normalizeTxParams(txParams) assert.equal(normalizedTxParams.to.slice(0, 2), '0x', 'to should be hexPrefixd')
assert.equal(txParams.to.slice(0, 2), '0x', 'to should be hexPrefixd')
}) })
}) })