1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-10-22 11:22:43 +02:00
metamask-extension/test/e2e/mock-e2e.js

384 lines
9.7 KiB
JavaScript
Raw Normal View History

const blacklistedHosts = [
'arbitrum-mainnet.infura.io',
'goerli.infura.io',
'mainnet.infura.io',
'sepolia.infura.io',
];
const {
mockEmptyStalelistAndHotlist,
} = require('./tests/phishing-controller/mocks');
async function setupMocking(server, testSpecificMock) {
await server.forAnyRequest().thenPassThrough({
beforeRequest: (req) => {
const { host } = req.headers;
if (blacklistedHosts.includes(host)) {
return {
url: 'http://localhost:8545',
};
}
return {};
},
});
const mockedEndpoint = await testSpecificMock(server);
// Mocks below this line can be overridden by test-specific mocks
2023-03-08 17:33:27 +01:00
await server
.forPost(
'https://arbitrum-mainnet.infura.io/v3/00000000000000000000000000000000',
)
.thenCallback(() => {
return {
statusCode: 200,
json: {
jsonrpc: '2.0',
id: '1675864782845',
result: '0xa4b1',
},
};
});
await server.forPost('https://api.segment.io/v1/batch').thenCallback(() => {
return {
statusCode: 200,
};
});
2022-08-26 01:07:31 +02:00
await server
.forPost('https://sentry.io/api/0000000/envelope/')
.thenCallback(() => {
return {
statusCode: 200,
json: {},
};
});
await server
.forPost('https://sentry.io/api/0000000/store/')
.thenCallback(() => {
return {
statusCode: 200,
json: {},
};
});
await server
.forGet('https://www.4byte.directory/api/v1/signatures/')
.thenCallback(() => {
return {
statusCode: 200,
json: {
count: 1,
next: null,
previous: null,
results: [
{
id: 1,
created_at: null,
text_signature: 'deposit()',
hex_signature: null,
bytes_signature: null,
},
],
},
};
});
await server
Update `@metamask/gas-fee-controller` to v6 (#19366) * Update `@metamask/gas-fee-controller` to v6 The `@metamask/address-book-controller` package has been updated to v3. This version was part of the [core monorepo v53](MetaMask/core#1385) release. The remaining packages released as part of v53 will be updated in later PRs. This release included a number of breaking changes, but most of them do not affect the extension: * Bump to Node 16 * The extension already uses Node.js v16 * The `getChainId` constructor parameter now expects a `Hex` return type rather than a decimal string * The extension was already passing in a `getChainId` parameter that returned `Hex` * The gas fee controller messenger now requires the `NetworkController:stateChange` event instead of the `NetworkController:providerConfigChange` event * This does not apply if `onNetworkStateChange` and `getChainId` are provided to the constructor, which is the case here. * Update `@metamask/network-controller` dependency and peer dependency * This dependency is only used for types, and none of the type changes affect how the extension interacts with this controller. The one change that did have an impact is that the constructor parameter `onNetworkStateChange` now expects event handlers to be passed the full network state. Relates to #19271 * Ensure chainid always matches mainnet in test builds This is a bit strange, but this is how the tests were setup previously. * Fix accidental state mutation * Remove hardcoded mainnet chain ID from test builds
2023-06-13 16:43:13 +02:00
.forGet('https://gas-api.metaswap.codefi.network/networks/1337/gasPrices')
.thenCallback(() => {
return {
statusCode: 200,
json: {
SafeGasPrice: '1',
ProposeGasPrice: '2',
FastGasPrice: '3',
},
};
});
await server
.forGet('https://swap.metaswap.codefi.network/networks/1/token')
.withQuery({ address: '0x72c9Fb7ED19D3ce51cea5C56B3e023cd918baaDf' })
.thenCallback(() => {
return {
statusCode: 200,
json: {
symbol: 'AGLT',
type: 'erc20',
decimals: '18',
address: '0x72c9fb7ed19d3ce51cea5c56b3e023cd918baadf',
occurences: 1,
aggregators: ['dynamic'],
},
};
});
await server
.forGet(
Update `@metamask/gas-fee-controller` to v6 (#19366) * Update `@metamask/gas-fee-controller` to v6 The `@metamask/address-book-controller` package has been updated to v3. This version was part of the [core monorepo v53](MetaMask/core#1385) release. The remaining packages released as part of v53 will be updated in later PRs. This release included a number of breaking changes, but most of them do not affect the extension: * Bump to Node 16 * The extension already uses Node.js v16 * The `getChainId` constructor parameter now expects a `Hex` return type rather than a decimal string * The extension was already passing in a `getChainId` parameter that returned `Hex` * The gas fee controller messenger now requires the `NetworkController:stateChange` event instead of the `NetworkController:providerConfigChange` event * This does not apply if `onNetworkStateChange` and `getChainId` are provided to the constructor, which is the case here. * Update `@metamask/network-controller` dependency and peer dependency * This dependency is only used for types, and none of the type changes affect how the extension interacts with this controller. The one change that did have an impact is that the constructor parameter `onNetworkStateChange` now expects event handlers to be passed the full network state. Relates to #19271 * Ensure chainid always matches mainnet in test builds This is a bit strange, but this is how the tests were setup previously. * Fix accidental state mutation * Remove hardcoded mainnet chain ID from test builds
2023-06-13 16:43:13 +02:00
'https://gas-api.metaswap.codefi.network/networks/1337/suggestedGasFees',
)
.thenCallback(() => {
return {
statusCode: 200,
json: {
low: {
suggestedMaxPriorityFeePerGas: '1',
suggestedMaxFeePerGas: '20.44436136',
minWaitTimeEstimate: 15000,
maxWaitTimeEstimate: 30000,
},
medium: {
suggestedMaxPriorityFeePerGas: '1.5',
suggestedMaxFeePerGas: '25.80554517',
minWaitTimeEstimate: 15000,
maxWaitTimeEstimate: 45000,
},
high: {
suggestedMaxPriorityFeePerGas: '2',
suggestedMaxFeePerGas: '27.277766977',
minWaitTimeEstimate: 15000,
maxWaitTimeEstimate: 60000,
},
estimatedBaseFee: '19.444436136',
networkCongestion: 0.14685,
latestPriorityFeeRange: ['0.378818859', '6.555563864'],
historicalPriorityFeeRange: ['0.1', '248.262969261'],
historicalBaseFeeRange: ['14.146999781', '28.825256275'],
priorityFeeTrend: 'down',
baseFeeTrend: 'up',
},
};
});
await server
.forGet('https://swap.metaswap.codefi.network/featureFlags')
.thenCallback(() => {
return {
statusCode: 200,
json: [
{
ethereum: {
fallbackToV1: false,
mobileActive: true,
extensionActive: true,
},
bsc: {
fallbackToV1: false,
mobileActive: true,
extensionActive: true,
},
polygon: {
fallbackToV1: false,
mobileActive: true,
extensionActive: true,
},
avalanche: {
fallbackToV1: false,
mobileActive: true,
extensionActive: true,
},
smartTransactions: {
mobileActive: false,
extensionActive: false,
},
updated_at: '2022-03-17T15:54:00.360Z',
},
],
};
});
await server
.forGet('https://token-api.metaswap.codefi.network/tokens/1337')
.thenCallback(() => {
return {
statusCode: 200,
json: [
{
address: '0x0d8775f648430679a709e98d2b0cb6250d2887ef',
symbol: 'BAT',
decimals: 18,
name: 'Basic Attention Token',
iconUrl:
'https://assets.coingecko.com/coins/images/677/thumb/basic-attention-token.png?1547034427',
aggregators: [
'aave',
'bancor',
'coinGecko',
'oneInch',
'paraswap',
'pmm',
'zapper',
'zerion',
'zeroEx',
],
occurrences: 9,
},
],
};
});
await server
.forGet('https://swap.metaswap.codefi.network/networks/1/tokens')
.thenCallback(() => {
return {
statusCode: 200,
json: [
{
name: 'Ethereum',
symbol: 'ETH',
decimals: 18,
type: 'native',
iconUrl:
'https://token.metaswap.codefi.network/assets/nativeCurrencyLogos/ethereum.svg',
coingeckoId: 'ethereum',
address: '0x0000000000000000000000000000000000000000',
occurrences: 100,
aggregators: [],
},
{
address: '0x6b175474e89094c44da98b954eedeac495271d0f',
symbol: 'DAI',
decimals: 18,
name: 'Dai Stablecoin',
iconUrl:
'https://crypto.com/price/coin-data/icon/DAI/color_icon.png',
type: 'erc20',
aggregators: [
'aave',
'bancor',
'cmc',
'cryptocom',
'coinGecko',
'oneInch',
'pmm',
'zerion',
'lifi',
],
occurrences: 9,
fees: {
'0xb0da5965d43369968574d399dbe6374683773a65': 0,
},
storage: {
balance: 2,
},
},
{
address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
symbol: 'USDC',
decimals: 6,
name: 'USD Coin',
iconUrl:
'https://crypto.com/price/coin-data/icon/USDC/color_icon.png',
type: 'erc20',
aggregators: [
'aave',
'bancor',
'cryptocom',
'coinGecko',
'oneInch',
'pmm',
'zerion',
'lifi',
],
occurrences: 8,
fees: {},
storage: {
balance: 9,
},
},
{
address: '0xc6bdb96e29c38dc43f014eed44de4106a6a8eb5f',
symbol: 'INUINU',
decimals: 18,
name: 'Inu Inu',
iconUrl:
'https://assets.coingecko.com/coins/images/26391/thumb/logo_square_200.png?1657752596',
type: 'erc20',
aggregators: ['coinGecko'],
occurrences: 1,
},
],
};
});
await server
.forGet('https://swap.metaswap.codefi.network/networks/1/topAssets')
.thenCallback(() => {
return {
statusCode: 200,
json: [
{
address: '0x0000000000000000000000000000000000000000',
symbol: 'ETH',
},
{
address: '0x6b175474e89094c44da98b954eedeac495271d0f',
symbol: 'DAI',
},
{
address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
symbol: 'USDC',
},
{
address: '0xdac17f958d2ee523a2206206994597c13d831ec7',
symbol: 'USDT',
},
],
};
});
await server
.forGet('https://token-api.metaswap.codefi.network/token/1337')
.thenCallback(() => {
return {
statusCode: 200,
json: {},
};
});
// It disables loading of token icons, e.g. this URL: https://static.metafi.codefi.network/api/v1/tokenIcons/1337/0x0000000000000000000000000000000000000000.png
await server
.forGet(
/^https:\/\/static\.metafi\.codefi\.network\/api\/v1\/tokenIcons\/1337\/.*\.png/u,
)
.thenCallback(() => {
return {
statusCode: 200,
};
});
await server
.forGet('https://min-api.cryptocompare.com/data/price')
.withQuery({ fsym: 'ETH', tsyms: 'USD' })
.thenCallback(() => {
return {
statusCode: 200,
json: {
USD: '1700',
},
};
});
await mockEmptyStalelistAndHotlist(server);
2023-03-08 17:33:27 +01:00
await server
.forPost('https://customnetwork.com/api/customRPC')
.thenCallback(() => {
return {
statusCode: 200,
json: {
jsonrpc: '2.0',
id: '1675864782845',
result: '0x122',
},
};
});
return mockedEndpoint;
}
module.exports = { setupMocking };