Updating formatTxMetaForRpcResult to match latest spec (#11536)
parent
e60e371105
commit
ceaf16417d
@ -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…
Reference in new issue