mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Add backwards compatibility for ETH <-> WETH contract address validation (#10962)
This commit is contained in:
parent
04ab1e72cc
commit
d6d924b2b5
@ -695,7 +695,8 @@ export const isContractAddressValid = (
|
||||
swapMetaData,
|
||||
chainId = MAINNET_CHAIN_ID,
|
||||
) => {
|
||||
if (!contractAddress) {
|
||||
const contractAddressForChainId = SWAPS_CHAINID_CONTRACT_ADDRESS_MAP[chainId];
|
||||
if (!contractAddress || !contractAddressForChainId) {
|
||||
return false;
|
||||
}
|
||||
if (
|
||||
@ -707,12 +708,12 @@ export const isContractAddressValid = (
|
||||
// Sometimes we get a contract address with a few upper-case chars and since addresses are
|
||||
// case-insensitive, we compare uppercase versions for validity.
|
||||
return (
|
||||
contractAddress.toUpperCase() === ETH_WETH_CONTRACT_ADDRESS.toUpperCase()
|
||||
contractAddress.toUpperCase() ===
|
||||
ETH_WETH_CONTRACT_ADDRESS.toUpperCase() ||
|
||||
contractAddressForChainId.toUpperCase() === contractAddress.toUpperCase()
|
||||
);
|
||||
}
|
||||
const contractAddressForChainId = SWAPS_CHAINID_CONTRACT_ADDRESS_MAP[chainId];
|
||||
return (
|
||||
contractAddressForChainId &&
|
||||
contractAddressForChainId.toUpperCase() === contractAddress.toUpperCase()
|
||||
);
|
||||
};
|
||||
|
@ -245,9 +245,34 @@ describe('Swaps Util', () => {
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
it('returns false if "token_from" is ETH, "token_to" is WETH and "to" is mainnet contract address', () => {
|
||||
it('returns true if "token_from" is ETH, "token_to" is WETH and "to" is mainnet contract address', () => {
|
||||
usedTradeTxParams.to =
|
||||
SWAPS_CHAINID_CONTRACT_ADDRESS_MAP[MAINNET_CHAIN_ID];
|
||||
expect(
|
||||
isContractAddressValid(
|
||||
usedTradeTxParams.to,
|
||||
swapMetaData,
|
||||
MAINNET_CHAIN_ID,
|
||||
),
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
it('returns true if "token_from" is WETH, "token_to" is ETH and "to" is mainnet contract address', () => {
|
||||
swapMetaData.token_from = WETH_SYMBOL;
|
||||
swapMetaData.token_to = ETH_SYMBOL;
|
||||
usedTradeTxParams.to =
|
||||
SWAPS_CHAINID_CONTRACT_ADDRESS_MAP[MAINNET_CHAIN_ID];
|
||||
expect(
|
||||
isContractAddressValid(
|
||||
usedTradeTxParams.to,
|
||||
swapMetaData,
|
||||
MAINNET_CHAIN_ID,
|
||||
),
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
it('returns false if "token_from" is ETH, "token_to" is WETH and "to" is BSC contract address', () => {
|
||||
usedTradeTxParams.to = SWAPS_CHAINID_CONTRACT_ADDRESS_MAP[BSC_CHAIN_ID];
|
||||
expect(
|
||||
isContractAddressValid(
|
||||
usedTradeTxParams.to,
|
||||
@ -257,11 +282,10 @@ describe('Swaps Util', () => {
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
it('returns false if "token_from" is WETH, "token_to" is ETH and "to" is mainnet contract address', () => {
|
||||
it('returns false if "token_from" is WETH, "token_to" is ETH and "to" is BSC contract address', () => {
|
||||
swapMetaData.token_from = WETH_SYMBOL;
|
||||
swapMetaData.token_to = ETH_SYMBOL;
|
||||
usedTradeTxParams.to =
|
||||
SWAPS_CHAINID_CONTRACT_ADDRESS_MAP[MAINNET_CHAIN_ID];
|
||||
usedTradeTxParams.to = SWAPS_CHAINID_CONTRACT_ADDRESS_MAP[BSC_CHAIN_ID];
|
||||
expect(
|
||||
isContractAddressValid(
|
||||
usedTradeTxParams.to,
|
||||
@ -277,6 +301,16 @@ describe('Swaps Util', () => {
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
it('returns false if chainId is incorrect', () => {
|
||||
expect(
|
||||
isContractAddressValid(
|
||||
usedTradeTxParams.to,
|
||||
swapMetaData,
|
||||
'incorrectChainId',
|
||||
),
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
it('returns true if "token_from" is BAT and "to" is mainnet contract address', () => {
|
||||
swapMetaData.token_from = 'BAT';
|
||||
usedTradeTxParams.to =
|
||||
|
Loading…
Reference in New Issue
Block a user