const blacklistedHosts = [
'goerli.infura.io' ,
'mainnet.infura.io' ,
'sepolia.infura.io' ,
] ;
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 { } ;
} ,
} ) ;
await server . forPost ( 'https://api.segment.io/v1/batch' ) . thenCallback ( ( ) => {
return {
statusCode : 200 ,
} ;
} ) ;
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
. forGet ( 'https://gas-api.metaswap.codefi.network/networks/1/gasPrices' )
. thenCallback ( ( ) => {
return {
statusCode : 200 ,
json : {
SafeGasPrice : '1' ,
ProposeGasPrice : '2' ,
FastGasPrice : '3' ,
} ,
} ;
} ) ;
await server
. forGet (
'https://gas-api.metaswap.codefi.network/networks/1/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://token-api.metaswap.codefi.network/token/0x539' )
. thenCallback ( ( ) => {
return {
statusCode : 200 ,
json : { } ,
} ;
} ) ;
// It disables loading of token icons, e.g. this URL: https://static.metaswap.codefi.network/api/v1/tokenIcons/1337/0x0000000000000000000000000000000000000000.png
await server
. forGet (
/^https:\/\/static\.metaswap\.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' ,
} ,
} ;
} ) ;
testSpecificMock ( server ) ;
}
module . exports = { setupMocking } ;