2022-04-08 16:54:43 +02:00
const blacklistedHosts = [
2022-12-19 17:46:07 +01:00
'arbitrum-mainnet.infura.io' ,
2022-04-08 16:54:43 +02:00
'goerli.infura.io' ,
'mainnet.infura.io' ,
2022-09-14 20:26:45 +02:00
'sepolia.infura.io' ,
2022-04-08 16:54:43 +02:00
] ;
2023-02-24 16:09:00 +01:00
const HOTLIST _URL =
'https://static.metafi.codefi.network/api/v1/lists/hotlist.json' ;
const STALELIST _URL =
'https://static.metafi.codefi.network/api/v1/lists/stalelist.json' ;
const emptyHotlist = [ ] ;
const emptyStalelist = {
version : 2 ,
tolerance : 2 ,
fuzzylist : [ ] ,
allowlist : [ ] ,
blocklist : [ ] ,
lastUpdated : 0 ,
} ;
2022-03-07 20:23:04 +01:00
async function setupMocking ( server , testSpecificMock ) {
2022-04-08 16:54:43 +02:00
await server . forAnyRequest ( ) . thenPassThrough ( {
beforeRequest : ( req ) => {
const { host } = req . headers ;
if ( blacklistedHosts . includes ( host ) ) {
return {
url : 'http://localhost:8545' ,
} ;
}
return { } ;
} ,
} ) ;
2023-04-19 16:36:23 +02:00
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' ,
} ,
} ;
} ) ;
2022-02-16 15:21:41 +01:00
2022-04-06 10:05:45 +02:00
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 : { } ,
} ;
} ) ;
2022-07-20 19:39:40 +02:00
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 ,
} ,
] ,
} ,
} ;
} ) ;
2022-03-07 20:23:04 +01:00
await server
2023-06-13 16:43:13 +02:00
. forGet ( 'https://gas-api.metaswap.codefi.network/networks/1337/gasPrices' )
2022-02-16 15:21:41 +01:00
. thenCallback ( ( ) => {
return {
statusCode : 200 ,
json : {
SafeGasPrice : '1' ,
ProposeGasPrice : '2' ,
FastGasPrice : '3' ,
} ,
} ;
} ) ;
2022-02-22 17:48:12 +01:00
2022-11-16 16:57:47 +01:00
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' ] ,
} ,
} ;
} ) ;
2022-03-16 17:06:13 +01:00
await server
. forGet (
2023-06-13 16:43:13 +02:00
'https://gas-api.metaswap.codefi.network/networks/1337/suggestedGasFees' ,
2022-03-16 17:06:13 +01:00
)
. 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' ,
} ,
} ;
} ) ;
2022-04-06 10:05:45 +02:00
await server
. forGet ( 'https://swap.metaswap.codefi.network/featureFlags' )
. thenCallback ( ( ) => {
return {
statusCode : 200 ,
json : [
{
ethereum : {
2022-09-29 18:03:38 +02:00
fallbackToV1 : false ,
2022-04-06 10:05:45 +02:00
mobileActive : true ,
extensionActive : true ,
} ,
bsc : {
2022-09-29 18:03:38 +02:00
fallbackToV1 : false ,
2022-04-06 10:05:45 +02:00
mobileActive : true ,
extensionActive : true ,
} ,
polygon : {
2022-09-29 18:03:38 +02:00
fallbackToV1 : false ,
2022-04-06 10:05:45 +02:00
mobileActive : true ,
extensionActive : true ,
} ,
avalanche : {
2022-09-29 18:03:38 +02:00
fallbackToV1 : false ,
2022-04-06 10:05:45 +02:00
mobileActive : true ,
extensionActive : true ,
} ,
smartTransactions : {
mobileActive : false ,
extensionActive : false ,
} ,
updated _at : '2022-03-17T15:54:00.360Z' ,
} ,
] ,
} ;
} ) ;
2022-04-04 17:02:29 +02:00
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 ,
} ,
] ,
} ;
} ) ;
2022-11-16 16:57:47 +01:00
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' ,
} ,
] ,
} ;
} ) ;
2022-07-19 17:22:38 +02:00
await server
2023-06-09 22:48:48 +02:00
. forGet ( 'https://token-api.metaswap.codefi.network/token/1337' )
2022-07-19 17:22:38 +02:00
. thenCallback ( ( ) => {
return {
statusCode : 200 ,
json : { } ,
} ;
} ) ;
2023-03-07 16:51:15 +01:00
// It disables loading of token icons, e.g. this URL: https://static.metafi.codefi.network/api/v1/tokenIcons/1337/0x0000000000000000000000000000000000000000.png
2022-07-18 16:43:30 +02:00
await server
. forGet (
2023-03-07 16:51:15 +01:00
/^https:\/\/static\.metafi\.codefi\.network\/api\/v1\/tokenIcons\/1337\/.*\.png/u ,
2022-07-18 16:43:30 +02:00
)
. thenCallback ( ( ) => {
return {
statusCode : 200 ,
} ;
} ) ;
2022-08-11 17:02:19 +02:00
await server
. forGet ( 'https://min-api.cryptocompare.com/data/price' )
. withQuery ( { fsym : 'ETH' , tsyms : 'USD' } )
. thenCallback ( ( ) => {
return {
statusCode : 200 ,
json : {
USD : '1700' ,
} ,
} ;
} ) ;
2023-02-24 16:09:00 +01:00
await server . forGet ( STALELIST _URL ) . thenCallback ( ( ) => {
return {
statusCode : 200 ,
json : emptyStalelist ,
} ;
} ) ;
await server . forGet ( HOTLIST _URL ) . thenCallback ( ( ) => {
return {
statusCode : 200 ,
json : emptyHotlist ,
} ;
} ) ;
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' ,
} ,
} ;
} ) ;
2023-04-19 16:36:23 +02:00
return mockedEndpoint ;
2022-02-16 15:21:41 +01:00
}
module . exports = { setupMocking } ;