Files
radicle-explorer/cypress/support/e2e.ts
T
Sebastian Martinez 2d7c535e14 Update Cypress to v10
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2022-06-09 08:34:10 +02:00

123 lines
5.4 KiB
TypeScript

/* eslint-disable @typescript-eslint/no-unused-vars */
import '@cypress/code-coverage/support';
import { JsonRpcProvider, JsonRpcSigner } from '@ethersproject/providers';
import '@testing-library/cypress/add-commands';
import { BigNumber, ethers } from 'ethers';
declare global {
interface Window {
ethereum: any;
localStorage: Storage;
}
}
export class MockExtensionProvider extends ethers.providers.BaseProvider {
isMetaMask = true;
currentAddress: string;
constructor(network: ethers.providers.Networkish, address: string) {
super(network);
this.currentAddress = address;
console.log("Creating Mock provider");
}
get ready(): Promise<ethers.providers.Network> {
return Promise.resolve(this.network);
}
getSigner(addressOrIndex?: string | number): JsonRpcSigner {
return new JsonRpcSigner({}, this as unknown as JsonRpcProvider, addressOrIndex);
}
changeAccount(address: string): void {
this.currentAddress = address;
this.emit("accountsChanged", [address]);
}
async request({ method, params }: { method: string; params: any }): Promise<any> {
switch (method) {
case 'eth_chainId':
return this.network.chainId;
case 'net_version':
return this.network.chainId;
case 'eth_call':
return resolveEthCall(params);
case 'eth_accounts':
return [this.currentAddress];
case 'eth_requestAccounts':
return [this.currentAddress];
case 'eth_getCode':
return "0x";
case 'eth_blockNumber':
return BigNumber.from(1);
case 'eth_estimateGas':
return BigNumber.from(21000);
case 'eth_sendTransaction':
return "0x8829dea7e20ebcf6dbfd942e3613d7ac49b9aef3ecbed396acfc5901713f5983";
case 'eth_getTransactionByHash':
return {
hash: "0x8829dea7e20ebcf6dbfd942e3613d7ac49b9aef3ecbed396acfc5901713f5983",
to: "0x0000000000000000000000000000000000000000",
from: "0x0000000000000000000000000000000000000000",
nonce: 123,
gasLimit: BigNumber.from(21000),
gasPrice: BigNumber.from(40),
data: "0x",
value: BigNumber.from(0),
chainId: 4,
};
case 'eth_getTransactionCount':
return BigNumber.from(123);
case 'eth_getTransactionReceipt':
return {
to: '0x01139F82659A3bD56D1f051D57D4Bc96a3b9Ef05',
from: '0x00192Fb10dF37c9FB26829eb2CC623cd1BF599E8',
contractAddress: null,
transactionIndex: 338,
gasUsed: BigNumber.from('0x5208'),
logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
blockHash: '0xdbe7ca0dd26310cd5415202c67467d46795cfec922dbb47e4cc4ff388e7856d2',
transactionHash: '0x8829dea7e20ebcf6dbfd942e3613d7ac49b9aef3ecbed396acfc5901713f5983',
logs: [],
blockNumber: 14451272,
confirmations: 53,
cumulativeGasUsed: BigNumber.from('0x01b11d57'),
effectiveGasPrice: BigNumber.from('0x0dffd03ca0'),
status: 1,
type: 2,
byzantium: true
};
default:
console.log("Unknown method", method);
break;
}
}
}
function resolveEthCall(params: { to: string; data: string }[]): string {
const [{ to, data }] = params;
// Get Resolver
if (to === "0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e") {
return "0x0000000000000000000000004976fb03c32e5b8cfe2b6ccb31c09ba78ebaba41";
// Get ENS Attributes
} else if (to === "0x4976fb03c32e5b8cfe2b6ccb31c09ba78ebaba41" && data === "0x59d1d43c567c364804de7bbedb53f583e483f6b73513fd2f44299e281024e4719da0b332000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000066176617461720000000000000000000000000000000000000000000000000000") {
return "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001f68747470733a2f2f636c6f7564686561642e696f2f6176617461722e706e6700";
// Get Org informations
} else if (to === "0x8152237402e0f194176154c3a6ea1eb99b611482" && data === "0x8da5cb5b") {
return "0x000000000000000000000000ceab094641905c209cc796fc8037dd9ecc87ca2f";
// Get Token Balance
} else if (to === "0x31c8eacbffdd875c74b94b077895bd78cf1e64a3" && data === "0x70a082310000000000000000000000003256a804085c24f3451cab2c98a37e16deec5721") {
return "0x00000000000000000000000000000000000000000000000246DDF97976680000";
// getMaxWithdrawAmount
} else if (to === "0x9aa75397ed632a3060acb5de7f96e2457bceed8d" && data === "0xf516440c") {
return "0x000000000000000000000000000000000000000000000001D7D843DC3B480000";
// Get resolved address from ENS
} else if (to === "0x4976fb03c32e5b8cfe2b6ccb31c09ba78ebaba41") {
return "0x000000000000000000000000394b920c5d39e0ca40fca2871569b6b90d750c7c";
// Return 0 for token balances else
} else {
return "0x0000000000000000000000000000000000000000000000000000000000000000";
}
}