Updating formatTxMetaForRpcResult to match latest spec (#11536)

feature/default_network_editable
ryanml 3 years ago committed by GitHub
parent e60e371105
commit ceaf16417d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      app/scripts/controllers/network/pending-middleware.test.js
  2. 58
      app/scripts/controllers/network/util.js
  3. 99
      app/scripts/controllers/network/util.test.js

@ -53,6 +53,7 @@ describe('PendingNonceMiddleware', function () {
getPendingTransactionByHash, getPendingTransactionByHash,
}); });
const spec = { const spec = {
accessList: null,
blockHash: null, blockHash: null,
blockNumber: null, blockNumber: null,
from: '0xf231d46dd78806e1dd93442cf33c7671f8538748', from: '0xf231d46dd78806e1dd93442cf33c7671f8538748',
@ -62,6 +63,7 @@ describe('PendingNonceMiddleware', function () {
'0x2cc5a25744486f7383edebbf32003e5a66e18135799593d6b5cdd2bb43674f09', '0x2cc5a25744486f7383edebbf32003e5a66e18135799593d6b5cdd2bb43674f09',
input: '0x', input: '0x',
nonce: '0x4', nonce: '0x4',
type: '0x0',
to: '0xf231d46dd78806e1dd93442cf33c7671f8538748', to: '0xf231d46dd78806e1dd93442cf33c7671f8538748',
transactionIndex: null, transactionIndex: null,
value: '0x0', value: '0x0',

@ -1,24 +1,48 @@
import { NETWORK_TO_NAME_MAP } from '../../../../shared/constants/network'; import { NETWORK_TO_NAME_MAP } from '../../../../shared/constants/network';
import { TRANSACTION_ENVELOPE_TYPES } from '../../../../shared/constants/transaction';
export const getNetworkDisplayName = (key) => NETWORK_TO_NAME_MAP[key]; export const getNetworkDisplayName = (key) => NETWORK_TO_NAME_MAP[key];
export function formatTxMetaForRpcResult(txMeta) { export function formatTxMetaForRpcResult(txMeta) {
return { const { r, s, v, hash, txReceipt, txParams } = txMeta;
blockHash: txMeta.txReceipt ? txMeta.txReceipt.blockHash : null, const {
blockNumber: txMeta.txReceipt ? txMeta.txReceipt.blockNumber : null, to,
from: txMeta.txParams.from, data,
gas: txMeta.txParams.gas, nonce,
gasPrice: txMeta.txParams.gasPrice, gas,
hash: txMeta.hash, from,
input: txMeta.txParams.data || '0x', value,
nonce: txMeta.txParams.nonce, gasPrice,
to: txMeta.txParams.to, accessList,
transactionIndex: txMeta.txReceipt maxFeePerGas,
? txMeta.txReceipt.transactionIndex maxPriorityFeePerGas,
: null, } = txParams;
value: txMeta.txParams.value || '0x0',
v: txMeta.v, const formattedTxMeta = {
r: txMeta.r, v,
s: txMeta.s, r,
s,
to,
gas,
from,
hash,
nonce,
input: data || '0x',
value: value || '0x0',
accessList: accessList || null,
blockHash: txReceipt?.blockHash || null,
blockNumber: txReceipt?.blockNumber || null,
transactionIndex: txReceipt?.transactionIndex || null,
}; };
if (maxFeePerGas && maxPriorityFeePerGas) {
formattedTxMeta.maxFeePerGas = maxFeePerGas;
formattedTxMeta.maxPriorityFeePerGas = maxPriorityFeePerGas;
formattedTxMeta.type = TRANSACTION_ENVELOPE_TYPES.FEE_MARKET;
} else {
formattedTxMeta.gasPrice = gasPrice;
formattedTxMeta.type = TRANSACTION_ENVELOPE_TYPES.LEGACY;
}
return formattedTxMeta;
} }

@ -0,0 +1,99 @@
import { strict as assert } from 'assert';
import { TRANSACTION_STATUSES } from '../../../../shared/constants/transaction';
import { formatTxMetaForRpcResult } from './util';
describe('network utils', function () {
describe('formatTxMetaForRpcResult', function () {
it('should correctly format the tx meta object (EIP-1559)', function () {
const txMeta = {
id: 1,
status: TRANSACTION_STATUSES.UNAPPROVED,
txParams: {
from: '0xc684832530fcbddae4b4230a47e991ddcec2831d',
to: '0x1678a085c290ebd122dc42cba69373b5953b831d',
maxFeePerGas: '0x77359400',
maxPriorityFeePerGas: '0x77359400',
gas: '0x7b0d',
nonce: '0x4b',
},
type: 'sentEther',
origin: 'other',
chainId: '0x3',
time: 1624408066355,
metamaskNetworkId: '3',
hash:
'0x4bcb6cd6b182209585f8ad140260ddb35c81a575dd40f508d9767e652a9f60e7',
r: '0x4c3111e42ed5eec3dcecba1e234700f387e8693c373c61c3e54a762a26f1570e',
s: '0x18bfc4eeb7ebcfacc3bd59ea100a6834ea3265e65945dbec69aa2a06564fafff',
v: '0x29',
};
const expectedResult = {
accessList: null,
blockHash: null,
blockNumber: null,
from: '0xc684832530fcbddae4b4230a47e991ddcec2831d',
gas: '0x7b0d',
hash:
'0x4bcb6cd6b182209585f8ad140260ddb35c81a575dd40f508d9767e652a9f60e7',
input: '0x',
maxFeePerGas: '0x77359400',
maxPriorityFeePerGas: '0x77359400',
nonce: '0x4b',
r: '0x4c3111e42ed5eec3dcecba1e234700f387e8693c373c61c3e54a762a26f1570e',
s: '0x18bfc4eeb7ebcfacc3bd59ea100a6834ea3265e65945dbec69aa2a06564fafff',
to: '0x1678a085c290ebd122dc42cba69373b5953b831d',
transactionIndex: null,
type: '0x2',
v: '0x29',
value: '0x0',
};
const result = formatTxMetaForRpcResult(txMeta);
assert.deepEqual(result, expectedResult);
});
it('should correctly format the tx meta object (non EIP-1559)', function () {
const txMeta = {
id: 1,
status: TRANSACTION_STATUSES.UNAPPROVED,
txParams: {
from: '0xc684832530fcbddae4b4230a47e991ddcec2831d',
to: '0x1678a085c290ebd122dc42cba69373b5953b831d',
gasPrice: '0x77359400',
gas: '0x7b0d',
nonce: '0x4b',
},
type: 'sentEther',
origin: 'other',
chainId: '0x3',
time: 1624408066355,
metamaskNetworkId: '3',
hash:
'0x4bcb6cd6b182209585f8ad140260ddb35c81a575dd40f508d9767e652a9f60e7',
r: '0x4c3111e42ed5eec3dcecba1e234700f387e8693c373c61c3e54a762a26f1570e',
s: '0x18bfc4eeb7ebcfacc3bd59ea100a6834ea3265e65945dbec69aa2a06564fafff',
v: '0x29',
};
const expectedResult = {
accessList: null,
blockHash: null,
blockNumber: null,
from: '0xc684832530fcbddae4b4230a47e991ddcec2831d',
gas: '0x7b0d',
hash:
'0x4bcb6cd6b182209585f8ad140260ddb35c81a575dd40f508d9767e652a9f60e7',
input: '0x',
gasPrice: '0x77359400',
nonce: '0x4b',
r: '0x4c3111e42ed5eec3dcecba1e234700f387e8693c373c61c3e54a762a26f1570e',
s: '0x18bfc4eeb7ebcfacc3bd59ea100a6834ea3265e65945dbec69aa2a06564fafff',
to: '0x1678a085c290ebd122dc42cba69373b5953b831d',
transactionIndex: null,
type: '0x0',
v: '0x29',
value: '0x0',
};
const result = formatTxMetaForRpcResult(txMeta);
assert.deepEqual(result, expectedResult);
});
});
});
Loading…
Cancel
Save