aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/scripts/controllers/transactions.js37
-rw-r--r--test/unit/tx-controller-test.js17
2 files changed, 27 insertions, 27 deletions
diff --git a/app/scripts/controllers/transactions.js b/app/scripts/controllers/transactions.js
index a73a8b36d..336b0d8f7 100644
--- a/app/scripts/controllers/transactions.js
+++ b/app/scripts/controllers/transactions.js
@@ -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,25 +315,24 @@ module.exports = class TransactionController extends EventEmitter {
//
_normalizeTxParams (txParams) {
- 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)
+ // 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),
}
- if (txParams.value) txParams.value = ethUtil.addHexPrefix(txParams.value)
+ // apply only keys in the whiteList
+ const normalizedTxParams = {}
+ Object.keys(whiteList).forEach((key) => {
+ if (txParams[key]) normalizedTxParams[key] = whiteList[key](txParams[key])
+ })
- if (txParams.gas) txParams.gas = ethUtil.addHexPrefix(txParams.gas)
- if (txParams.gasPrice) txParams.gas = ethUtil.addHexPrefix(txParams.gas)
+ return normalizedTxParams
}
_validateTxParams (txParams) {
diff --git a/test/unit/tx-controller-test.js b/test/unit/tx-controller-test.js
index 3fec9758f..824574ff2 100644
--- a/test/unit/tx-controller-test.js
+++ b/test/unit/tx-controller-test.js
@@ -239,19 +239,20 @@ describe('Transaction Controller', function () {
from: 'a7df1beDBF813f57096dF77FCd515f0B3900e402',
to: null,
data: '68656c6c6f20776f726c64',
+ random: 'hello world',
}
- txController._normalizeTxParams(txParams)
+ let normalizedTxParams = txController._normalizeTxParams(txParams)
- 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(!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')
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')
})
})