mirror of
https://github.com/Instadapp/dsa-connectors.git
synced 2024-07-29 22:37:00 +00:00
added test for 0x
This commit is contained in:
parent
19d74394b6
commit
0486a25c7c
59
test/0x/api.js
Normal file
59
test/0x/api.js
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
import axios from "axios";
|
||||||
|
import { childLogger } from "./logger";
|
||||||
|
|
||||||
|
const logger = childLogger("utils/api");
|
||||||
|
|
||||||
|
function getApi() {
|
||||||
|
const api = axios.create({});
|
||||||
|
|
||||||
|
api.interceptors.request.use(
|
||||||
|
(request) => {
|
||||||
|
logger.info({
|
||||||
|
msg: "Request to external API",
|
||||||
|
req: {
|
||||||
|
method: request.method,
|
||||||
|
url: request.url,
|
||||||
|
params: request.params,
|
||||||
|
headers: request.headers,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
return request;
|
||||||
|
},
|
||||||
|
(error) => {
|
||||||
|
logger.error({ msg: "Error while requesting external API", error });
|
||||||
|
|
||||||
|
return Promise.reject(error);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
api.interceptors.response.use(
|
||||||
|
(response) => {
|
||||||
|
logger.info({
|
||||||
|
msg: "Response from external API",
|
||||||
|
req: {
|
||||||
|
method: response.config.method,
|
||||||
|
url: response.config.url,
|
||||||
|
params: response.config.params,
|
||||||
|
},
|
||||||
|
res: {
|
||||||
|
statusCode: response.status,
|
||||||
|
statusText: response.statusText,
|
||||||
|
headers: response.config.headers,
|
||||||
|
data: response.data,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
return response;
|
||||||
|
},
|
||||||
|
(error) => {
|
||||||
|
logger.error({ msg: "Error response from external API", error });
|
||||||
|
|
||||||
|
return Promise.reject(error);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
return api;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default getApi();
|
173
test/0x/zeroEx.test.js
Normal file
173
test/0x/zeroEx.test.js
Normal file
|
@ -0,0 +1,173 @@
|
||||||
|
const { expect } = require("chai");
|
||||||
|
const hre = require("hardhat");
|
||||||
|
const axios = require("axios");
|
||||||
|
const { web3, deployments, waffle, ethers } = hre;
|
||||||
|
const { provider, deployContract } = waffle;
|
||||||
|
const BigNumber = require("bignumber.js");
|
||||||
|
|
||||||
|
// import axpi from "./api";
|
||||||
|
|
||||||
|
const deployAndEnableConnector = require("../../scripts/deployAndEnableConnector.js");
|
||||||
|
const buildDSAv2 = require("../../scripts/buildDSAv2");
|
||||||
|
const encodeSpells = require("../../scripts/encodeSpells.js");
|
||||||
|
const getMasterSigner = require("../../scripts/getMasterSigner");
|
||||||
|
const addLiquidity = require("../../scripts/addLiquidity");
|
||||||
|
|
||||||
|
const addresses = require("../../scripts/constant/addresses");
|
||||||
|
const abis = require("../../scripts/constant/abis");
|
||||||
|
const constants = require("../../scripts/constant/constant");
|
||||||
|
const tokens = require("../../scripts/constant/tokens");
|
||||||
|
|
||||||
|
const connectV2CompoundArtifacts = require("../../artifacts/contracts/mainnet/connectors/0x/main.sol/ConnectV2ZeroEx.json");
|
||||||
|
|
||||||
|
describe("ZeroEx", function() {
|
||||||
|
const connectorName = "zeroEx-test";
|
||||||
|
|
||||||
|
let dsaWallet0;
|
||||||
|
let masterSigner;
|
||||||
|
let instaConnectorsV2;
|
||||||
|
let connector;
|
||||||
|
|
||||||
|
const wallets = provider.getWallets();
|
||||||
|
const [wallet0, wallet1, wallet2, wallet3] = wallets;
|
||||||
|
|
||||||
|
before(async () => {
|
||||||
|
// await hre.network.provider.request({
|
||||||
|
// method: "hardhat_reset",
|
||||||
|
// params: [
|
||||||
|
// {
|
||||||
|
// forking: {
|
||||||
|
// jsonRpcUrl: hre.config.networks.hardhat.forking.url,
|
||||||
|
// blockNumber: 13300000,
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// ],
|
||||||
|
// });
|
||||||
|
masterSigner = await getMasterSigner(wallet3);
|
||||||
|
instaConnectorsV2 = await ethers.getContractAt(
|
||||||
|
abis.core.connectorsV2,
|
||||||
|
addresses.core.connectorsV2
|
||||||
|
);
|
||||||
|
connector = await deployAndEnableConnector({
|
||||||
|
connectorName,
|
||||||
|
contractArtifact: connectV2CompoundArtifacts,
|
||||||
|
signer: masterSigner,
|
||||||
|
connectors: instaConnectorsV2,
|
||||||
|
});
|
||||||
|
console.log("Connector address", connector.address);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Should have contracts deployed.", async function() {
|
||||||
|
expect(!!instaConnectorsV2.address).to.be.true;
|
||||||
|
expect(!!connector.address).to.be.true;
|
||||||
|
expect(!!masterSigner.address).to.be.true;
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("DSA wallet setup", function() {
|
||||||
|
it("Should build DSA v2", async function() {
|
||||||
|
dsaWallet0 = await buildDSAv2(wallet0.address);
|
||||||
|
expect(!!dsaWallet0.address).to.be.true;
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Deposit ETH and DAI into DSA wallet", async function() {
|
||||||
|
await wallet0.sendTransaction({
|
||||||
|
to: dsaWallet0.address,
|
||||||
|
value: ethers.utils.parseEther("10"),
|
||||||
|
});
|
||||||
|
console.log(dsaWallet0.address);
|
||||||
|
expect(await ethers.provider.getBalance(dsaWallet0.address)).to.be.gte(
|
||||||
|
ethers.utils.parseEther("10")
|
||||||
|
);
|
||||||
|
|
||||||
|
// await addLiquidity(
|
||||||
|
// "dai",
|
||||||
|
// dsaWallet0.address,
|
||||||
|
// ethers.utils.parseUnits("100000", 18)
|
||||||
|
// );
|
||||||
|
// expect(await ether s.provider.getBalance(dsaWallet0.address)).to.be.gte(ethers.utils.parseUnits("100000", 18));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("Main", function() {
|
||||||
|
it("should swap", async function() {
|
||||||
|
async function getArg() {
|
||||||
|
const slippage = 0.5;
|
||||||
|
|
||||||
|
/* MATIC -> USDT */
|
||||||
|
const sellTokenAddress = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; // Matic, decimals 18
|
||||||
|
const sellTokenDecimals = 18;
|
||||||
|
const buyTokenAddress = "0xc2132D05D31c914a87C6611C10748AEb04B58e8F"; // USDT, decimals 6
|
||||||
|
const buyTokenDecimals = 6;
|
||||||
|
const amount = 1;
|
||||||
|
|
||||||
|
const srcAmount = new BigNumber(amount)
|
||||||
|
.times(new BigNumber(10).pow(sellTokenDecimals))
|
||||||
|
.toFixed(0);
|
||||||
|
console.log(srcAmount);
|
||||||
|
|
||||||
|
const fromAddress = dsaWallet0.address;
|
||||||
|
|
||||||
|
let url = `https://api.0x.org/swap/v1/quote`;
|
||||||
|
|
||||||
|
const params = {
|
||||||
|
buyToken: "DAI",
|
||||||
|
sellToken: "ETH",
|
||||||
|
sellAmount: "1000000000000000000", // Always denominated in wei
|
||||||
|
};
|
||||||
|
|
||||||
|
const buyTokenAmount = await axios
|
||||||
|
.get(url, { params: params })
|
||||||
|
.then((data) => data.data.buyAmount);
|
||||||
|
|
||||||
|
const calldata = await axios
|
||||||
|
.get(url, { params: params })
|
||||||
|
.then((data) => data.data.data);
|
||||||
|
|
||||||
|
console.log(calldata);
|
||||||
|
|
||||||
|
let caculateUnitAmt = () => {
|
||||||
|
const buyTokenAmountRes = new BigNumber(buyTokenAmount)
|
||||||
|
.dividedBy(new BigNumber(10).pow(buyTokenDecimals))
|
||||||
|
.toFixed(8);
|
||||||
|
|
||||||
|
let unitAmt = new BigNumber(buyTokenAmountRes).dividedBy(
|
||||||
|
new BigNumber(amount)
|
||||||
|
);
|
||||||
|
|
||||||
|
unitAmt = unitAmt.multipliedBy((100 - 0.3) / 100);
|
||||||
|
unitAmt = unitAmt.multipliedBy(1e18).toFixed(0);
|
||||||
|
return unitAmt;
|
||||||
|
};
|
||||||
|
let unitAmt = caculateUnitAmt();
|
||||||
|
|
||||||
|
console.log("unitAmt - " + unitAmt);
|
||||||
|
|
||||||
|
return [
|
||||||
|
buyTokenAddress,
|
||||||
|
sellTokenAddress,
|
||||||
|
srcAmount,
|
||||||
|
unitAmt,
|
||||||
|
calldata,
|
||||||
|
0,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
let arg = await getArg();
|
||||||
|
const spells = [
|
||||||
|
{
|
||||||
|
connector: connectorName,
|
||||||
|
method: "swap",
|
||||||
|
args: arg,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
const tx = await dsaWallet0
|
||||||
|
.connect(wallet0)
|
||||||
|
.cast(...encodeSpells(spells), wallet1.address);
|
||||||
|
const receipt = await tx.wait();
|
||||||
|
console.log(receipt);
|
||||||
|
expect(await ethers.provider.getBalance(dsaWallet0.address)).to.be.lte(
|
||||||
|
ethers.utils.parseEther("9")
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user