mirror of
https://github.com/Instadapp/aave-protocol-v2.git
synced 2024-07-29 21:47:30 +00:00
- Changes on make-suite and refactoring on tests
This commit is contained in:
parent
268dcdead8
commit
2e72a55c78
|
@ -1,24 +1,17 @@
|
||||||
import {expect} from "chai";
|
import {expect} from "chai";
|
||||||
import {MockProvider} from "ethereum-waffle";
|
import {getAToken} from "../helpers/contracts-helpers";
|
||||||
import {
|
|
||||||
getAToken,
|
|
||||||
getAaveProtocolTestHelpers,
|
|
||||||
} from "../helpers/contracts-helpers";
|
|
||||||
import {evmRevert} from "../helpers/misc-utils";
|
|
||||||
import {AToken} from "../types/AToken";
|
import {AToken} from "../types/AToken";
|
||||||
import {TEST_SNAPSHOT_ID} from "../helpers/constants";
|
import {makeSuite, TestEnv} from "./helpers/make-suite";
|
||||||
import { makeSuite } from './helpers/make-suite';
|
|
||||||
|
|
||||||
makeSuite("AToken: Modifiers", () => {
|
makeSuite("AToken: Modifiers", (testEnv: TestEnv) => {
|
||||||
const [deployer, ...restWallets] = new MockProvider().getWallets();
|
|
||||||
let _aDAI = {} as AToken;
|
let _aDAI = {} as AToken;
|
||||||
const NOT_LENDING_POOL_MSG =
|
const NOT_LENDING_POOL_MSG =
|
||||||
"The caller of this function must be a lending pool";
|
"The caller of this function must be a lending pool";
|
||||||
|
|
||||||
before(async () => {
|
before(async () => {
|
||||||
const testHelpers = await getAaveProtocolTestHelpers();
|
const {helpersContract} = testEnv;
|
||||||
|
|
||||||
const aDAIAddress = (await testHelpers.getAllATokens()).find(
|
const aDAIAddress = (await helpersContract.getAllATokens()).find(
|
||||||
(aToken) => aToken.symbol === "aDAI"
|
(aToken) => aToken.symbol === "aDAI"
|
||||||
)?.tokenAddress;
|
)?.tokenAddress;
|
||||||
if (!aDAIAddress) {
|
if (!aDAIAddress) {
|
||||||
|
@ -29,20 +22,23 @@ makeSuite("AToken: Modifiers", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Tries to invoke mintOnDeposit not being the LendingPool", async () => {
|
it("Tries to invoke mintOnDeposit not being the LendingPool", async () => {
|
||||||
|
const {deployer} = testEnv;
|
||||||
await expect(_aDAI.mintOnDeposit(deployer.address, "1")).to.be.revertedWith(
|
await expect(_aDAI.mintOnDeposit(deployer.address, "1")).to.be.revertedWith(
|
||||||
NOT_LENDING_POOL_MSG
|
NOT_LENDING_POOL_MSG
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Tries to invoke burnOnLiquidation not being the LendingPool", async () => {
|
it("Tries to invoke burnOnLiquidation not being the LendingPool", async () => {
|
||||||
|
const {deployer} = testEnv;
|
||||||
await expect(
|
await expect(
|
||||||
_aDAI.burnOnLiquidation(deployer.address, "1")
|
_aDAI.burnOnLiquidation(deployer.address, "1")
|
||||||
).to.be.revertedWith(NOT_LENDING_POOL_MSG);
|
).to.be.revertedWith(NOT_LENDING_POOL_MSG);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Tries to invoke transferOnLiquidation not being the LendingPool", async () => {
|
it("Tries to invoke transferOnLiquidation not being the LendingPool", async () => {
|
||||||
|
const {deployer, users} = testEnv;
|
||||||
await expect(
|
await expect(
|
||||||
_aDAI.transferOnLiquidation(deployer.address, restWallets[0].address, "1")
|
_aDAI.transferOnLiquidation(deployer.address, users[0].address, "1")
|
||||||
).to.be.revertedWith(NOT_LENDING_POOL_MSG);
|
).to.be.revertedWith(NOT_LENDING_POOL_MSG);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -5,72 +5,23 @@ import {
|
||||||
MAX_UINT_AMOUNT,
|
MAX_UINT_AMOUNT,
|
||||||
ZERO_ADDRESS,
|
ZERO_ADDRESS,
|
||||||
} from "../helpers/constants";
|
} from "../helpers/constants";
|
||||||
import {AToken} from "../types/AToken";
|
import {convertToCurrencyDecimals} from "../helpers/contracts-helpers";
|
||||||
import {MintableErc20} from "../types/MintableErc20";
|
|
||||||
import {LendingPool} from "../types/LendingPool";
|
|
||||||
import {LendingPoolCore} from "../types/LendingPoolCore";
|
|
||||||
import {
|
|
||||||
getAaveProtocolTestHelpers,
|
|
||||||
getMintableErc20,
|
|
||||||
getAToken,
|
|
||||||
convertToCurrencyDecimals,
|
|
||||||
getEthersSigners,
|
|
||||||
getLendingPoolCore,
|
|
||||||
getLendingPool,
|
|
||||||
} from "../helpers/contracts-helpers";
|
|
||||||
import {expect} from "chai";
|
import {expect} from "chai";
|
||||||
import {Signer, ethers} from "ethers";
|
import {ethers} from "ethers";
|
||||||
import {RateMode} from "../helpers/types";
|
import {RateMode} from "../helpers/types";
|
||||||
import { makeSuite } from './helpers/make-suite';
|
import {makeSuite, TestEnv} from "./helpers/make-suite";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
makeSuite("AToken: Transfer", () => {
|
|
||||||
let deployer: Signer;
|
|
||||||
let users: Signer[];
|
|
||||||
let _aDai: AToken;
|
|
||||||
let _dai: MintableErc20;
|
|
||||||
let _lendingPool: LendingPool;
|
|
||||||
let _lendingPoolCore: LendingPoolCore;
|
|
||||||
|
|
||||||
before(async () => {
|
|
||||||
const [_deployer, ..._users] = await getEthersSigners();
|
|
||||||
deployer = _deployer;
|
|
||||||
users = _users;
|
|
||||||
|
|
||||||
_lendingPool = await getLendingPool();
|
|
||||||
_lendingPoolCore = await getLendingPoolCore();
|
|
||||||
|
|
||||||
const testHelpers = await getAaveProtocolTestHelpers();
|
|
||||||
|
|
||||||
const aDaiAddress = (await testHelpers.getAllATokens()).find(
|
|
||||||
(aToken) => aToken.symbol === "aDAI"
|
|
||||||
)?.tokenAddress;
|
|
||||||
|
|
||||||
const daiAddress = (await testHelpers.getAllReservesTokens()).find(
|
|
||||||
(token) => token.symbol === "DAI"
|
|
||||||
)?.tokenAddress;
|
|
||||||
if (!aDaiAddress) {
|
|
||||||
console.log(`atoken-modifiers.spec: aDAI not correctly initialized`);
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
if (!daiAddress) {
|
|
||||||
console.log(`atoken-modifiers.spec: DAI not correctly initialized`);
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
_aDai = await getAToken(aDaiAddress);
|
|
||||||
_dai = await getMintableErc20(daiAddress);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
makeSuite("AToken: Transfer", (testEnv: TestEnv) => {
|
||||||
it("User 0 deposits 1000 DAI, transfers to user 1", async () => {
|
it("User 0 deposits 1000 DAI, transfers to user 1", async () => {
|
||||||
|
const {users, pool, core, _dai, _aDai} = testEnv;
|
||||||
|
|
||||||
await _dai
|
await _dai
|
||||||
.connect(users[0])
|
.connect(users[0].signer)
|
||||||
.mint(await convertToCurrencyDecimals(_dai.address, "1000"));
|
.mint(await convertToCurrencyDecimals(_dai.address, "1000"));
|
||||||
|
|
||||||
await _dai
|
await _dai
|
||||||
.connect(users[0])
|
.connect(users[0].signer)
|
||||||
.approve(_lendingPoolCore.address, APPROVAL_AMOUNT_LENDING_POOL_CORE);
|
.approve(core.address, APPROVAL_AMOUNT_LENDING_POOL_CORE);
|
||||||
|
|
||||||
//user 1 deposits 1000 DAI
|
//user 1 deposits 1000 DAI
|
||||||
const amountDAItoDeposit = await convertToCurrencyDecimals(
|
const amountDAItoDeposit = await convertToCurrencyDecimals(
|
||||||
|
@ -78,16 +29,16 @@ makeSuite("AToken: Transfer", () => {
|
||||||
"1000"
|
"1000"
|
||||||
);
|
);
|
||||||
|
|
||||||
await _lendingPool
|
await pool
|
||||||
.connect(users[0])
|
.connect(users[0].signer)
|
||||||
.deposit(_dai.address, amountDAItoDeposit, "0");
|
.deposit(_dai.address, amountDAItoDeposit, "0");
|
||||||
|
|
||||||
await _aDai
|
await _aDai
|
||||||
.connect(users[0])
|
.connect(users[0].signer)
|
||||||
.transfer(await users[1].getAddress(), amountDAItoDeposit);
|
.transfer(users[1].address, amountDAItoDeposit);
|
||||||
|
|
||||||
const fromBalance = await _aDai.balanceOf(await users[0].getAddress());
|
const fromBalance = await _aDai.balanceOf(users[0].address);
|
||||||
const toBalance = await _aDai.balanceOf(await users[1].getAddress());
|
const toBalance = await _aDai.balanceOf(users[1].address);
|
||||||
|
|
||||||
expect(fromBalance.toString()).to.be.equal(
|
expect(fromBalance.toString()).to.be.equal(
|
||||||
"0",
|
"0",
|
||||||
|
@ -100,9 +51,10 @@ makeSuite("AToken: Transfer", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it("User 1 redirects interest to user 2, transfers 500 DAI back to user 0", async () => {
|
it("User 1 redirects interest to user 2, transfers 500 DAI back to user 0", async () => {
|
||||||
|
const {users, _aDai, _dai} = testEnv;
|
||||||
await _aDai
|
await _aDai
|
||||||
.connect(users[1])
|
.connect(users[1].signer)
|
||||||
.redirectInterestStream(await users[2].getAddress());
|
.redirectInterestStream(users[2].address);
|
||||||
|
|
||||||
const aDAIRedirected = await convertToCurrencyDecimals(
|
const aDAIRedirected = await convertToCurrencyDecimals(
|
||||||
_dai.address,
|
_dai.address,
|
||||||
|
@ -112,7 +64,7 @@ makeSuite("AToken: Transfer", () => {
|
||||||
const aDAItoTransfer = await convertToCurrencyDecimals(_dai.address, "500");
|
const aDAItoTransfer = await convertToCurrencyDecimals(_dai.address, "500");
|
||||||
|
|
||||||
const user2RedirectedBalanceBefore = await _aDai.getRedirectedBalance(
|
const user2RedirectedBalanceBefore = await _aDai.getRedirectedBalance(
|
||||||
await users[2].getAddress()
|
users[2].address
|
||||||
);
|
);
|
||||||
expect(user2RedirectedBalanceBefore.toString()).to.be.equal(
|
expect(user2RedirectedBalanceBefore.toString()).to.be.equal(
|
||||||
aDAIRedirected,
|
aDAIRedirected,
|
||||||
|
@ -120,14 +72,14 @@ makeSuite("AToken: Transfer", () => {
|
||||||
);
|
);
|
||||||
|
|
||||||
await _aDai
|
await _aDai
|
||||||
.connect(users[1])
|
.connect(users[1].signer)
|
||||||
.transfer(await users[0].getAddress(), aDAItoTransfer);
|
.transfer(users[0].address, aDAItoTransfer);
|
||||||
|
|
||||||
const user2RedirectedBalanceAfter = await _aDai.getRedirectedBalance(
|
const user2RedirectedBalanceAfter = await _aDai.getRedirectedBalance(
|
||||||
await users[2].getAddress()
|
users[2].address
|
||||||
);
|
);
|
||||||
const user1RedirectionAddress = await _aDai.getInterestRedirectionAddress(
|
const user1RedirectionAddress = await _aDai.getInterestRedirectionAddress(
|
||||||
await users[1].getAddress()
|
users[1].address
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(user2RedirectedBalanceAfter.toString()).to.be.equal(
|
expect(user2RedirectedBalanceAfter.toString()).to.be.equal(
|
||||||
|
@ -135,25 +87,24 @@ makeSuite("AToken: Transfer", () => {
|
||||||
"Invalid redirected balance for user 2 after transfer"
|
"Invalid redirected balance for user 2 after transfer"
|
||||||
);
|
);
|
||||||
expect(user1RedirectionAddress.toString()).to.be.equal(
|
expect(user1RedirectionAddress.toString()).to.be.equal(
|
||||||
await users[2].getAddress(),
|
users[2].address,
|
||||||
"Invalid redirection address for user 1"
|
"Invalid redirection address for user 1"
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("User 0 transfers back to user 1", async () => {
|
it("User 0 transfers back to user 1", async () => {
|
||||||
|
const {users, _aDai, _dai} = testEnv;
|
||||||
const aDAItoTransfer = await convertToCurrencyDecimals(_dai.address, "500");
|
const aDAItoTransfer = await convertToCurrencyDecimals(_dai.address, "500");
|
||||||
|
|
||||||
await _aDai
|
await _aDai
|
||||||
.connect(users[0])
|
.connect(users[0].signer)
|
||||||
.transfer(await users[1].getAddress(), aDAItoTransfer);
|
.transfer(users[1].address, aDAItoTransfer);
|
||||||
|
|
||||||
const user2RedirectedBalanceAfter = await _aDai.getRedirectedBalance(
|
const user2RedirectedBalanceAfter = await _aDai.getRedirectedBalance(
|
||||||
await users[2].getAddress()
|
users[2].address
|
||||||
);
|
);
|
||||||
|
|
||||||
const user1BalanceAfter = await _aDai.balanceOf(
|
const user1BalanceAfter = await _aDai.balanceOf(users[1].address);
|
||||||
await users[1].getAddress()
|
|
||||||
);
|
|
||||||
|
|
||||||
expect(user2RedirectedBalanceAfter.toString()).to.be.equal(
|
expect(user2RedirectedBalanceAfter.toString()).to.be.equal(
|
||||||
user1BalanceAfter.toString(),
|
user1BalanceAfter.toString(),
|
||||||
|
@ -162,14 +113,16 @@ makeSuite("AToken: Transfer", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it("User 0 deposits 1 ETH and user tries to borrow, but the aTokens received as a transfer are not available as collateral (revert expected)", async () => {
|
it("User 0 deposits 1 ETH and user tries to borrow, but the aTokens received as a transfer are not available as collateral (revert expected)", async () => {
|
||||||
await _lendingPool
|
const {users, pool} = testEnv;
|
||||||
.connect(users[0])
|
|
||||||
|
await pool
|
||||||
|
.connect(users[0].signer)
|
||||||
.deposit(MOCK_ETH_ADDRESS, ethers.utils.parseEther("1.0"), "0", {
|
.deposit(MOCK_ETH_ADDRESS, ethers.utils.parseEther("1.0"), "0", {
|
||||||
value: ethers.utils.parseEther("1.0"),
|
value: ethers.utils.parseEther("1.0"),
|
||||||
});
|
});
|
||||||
await expect(
|
await expect(
|
||||||
_lendingPool
|
pool
|
||||||
.connect(users[1])
|
.connect(users[1].signer)
|
||||||
.borrow(
|
.borrow(
|
||||||
MOCK_ETH_ADDRESS,
|
MOCK_ETH_ADDRESS,
|
||||||
ethers.utils.parseEther("0.1"),
|
ethers.utils.parseEther("0.1"),
|
||||||
|
@ -181,8 +134,9 @@ makeSuite("AToken: Transfer", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it("User 1 sets the DAI as collateral and borrows, tries to transfer everything back to user 0 (revert expected)", async () => {
|
it("User 1 sets the DAI as collateral and borrows, tries to transfer everything back to user 0 (revert expected)", async () => {
|
||||||
await _lendingPool
|
const {users, pool, _aDai, _dai} = testEnv;
|
||||||
.connect(users[1])
|
await pool
|
||||||
|
.connect(users[1].signer)
|
||||||
.setUserUseReserveAsCollateral(_dai.address, true);
|
.setUserUseReserveAsCollateral(_dai.address, true);
|
||||||
|
|
||||||
const aDAItoTransfer = await convertToCurrencyDecimals(
|
const aDAItoTransfer = await convertToCurrencyDecimals(
|
||||||
|
@ -190,8 +144,8 @@ makeSuite("AToken: Transfer", () => {
|
||||||
"1000"
|
"1000"
|
||||||
);
|
);
|
||||||
|
|
||||||
await _lendingPool
|
await pool
|
||||||
.connect(users[1])
|
.connect(users[1].signer)
|
||||||
.borrow(
|
.borrow(
|
||||||
MOCK_ETH_ADDRESS,
|
MOCK_ETH_ADDRESS,
|
||||||
ethers.utils.parseEther("0.1"),
|
ethers.utils.parseEther("0.1"),
|
||||||
|
@ -200,24 +154,24 @@ makeSuite("AToken: Transfer", () => {
|
||||||
);
|
);
|
||||||
|
|
||||||
await expect(
|
await expect(
|
||||||
_aDai
|
_aDai.connect(users[1].signer).transfer(users[0].address, aDAItoTransfer),
|
||||||
.connect(users[1])
|
|
||||||
.transfer(await users[0].getAddress(), aDAItoTransfer),
|
|
||||||
"Transfer cannot be allowed."
|
"Transfer cannot be allowed."
|
||||||
).to.be.revertedWith("Transfer cannot be allowed.");
|
).to.be.revertedWith("Transfer cannot be allowed.");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("User 0 tries to transfer 0 balance (revert expected)", async () => {
|
it("User 0 tries to transfer 0 balance (revert expected)", async () => {
|
||||||
|
const {users, pool, _aDai, _dai} = testEnv;
|
||||||
await expect(
|
await expect(
|
||||||
_aDai.connect(users[0]).transfer(await users[1].getAddress(), "0"),
|
_aDai.connect(users[0].signer).transfer(users[1].address, "0"),
|
||||||
"Transferred amount needs to be greater than zero"
|
"Transferred amount needs to be greater than zero"
|
||||||
).to.be.revertedWith("Transferred amount needs to be greater than zero");
|
).to.be.revertedWith("Transferred amount needs to be greater than zero");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("User 1 repays the borrow, transfers aDAI back to user 0", async () => {
|
it("User 1 repays the borrow, transfers aDAI back to user 0", async () => {
|
||||||
await _lendingPool
|
const {users, pool, _aDai, _dai} = testEnv;
|
||||||
.connect(users[1])
|
await pool
|
||||||
.repay(MOCK_ETH_ADDRESS, MAX_UINT_AMOUNT, await users[1].getAddress(), {
|
.connect(users[1].signer)
|
||||||
|
.repay(MOCK_ETH_ADDRESS, MAX_UINT_AMOUNT, users[1].address, {
|
||||||
value: ethers.utils.parseEther("1"),
|
value: ethers.utils.parseEther("1"),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -227,15 +181,15 @@ makeSuite("AToken: Transfer", () => {
|
||||||
);
|
);
|
||||||
|
|
||||||
await _aDai
|
await _aDai
|
||||||
.connect(users[1])
|
.connect(users[1].signer)
|
||||||
.transfer(await users[0].getAddress(), aDAItoTransfer);
|
.transfer(users[0].address, aDAItoTransfer);
|
||||||
|
|
||||||
const user2RedirectedBalanceAfter = await _aDai.getRedirectedBalance(
|
const user2RedirectedBalanceAfter = await _aDai.getRedirectedBalance(
|
||||||
await users[2].getAddress()
|
users[2].address
|
||||||
);
|
);
|
||||||
|
|
||||||
const user1RedirectionAddress = await _aDai.getInterestRedirectionAddress(
|
const user1RedirectionAddress = await _aDai.getInterestRedirectionAddress(
|
||||||
await users[1].getAddress()
|
users[1].address
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(user2RedirectedBalanceAfter.toString()).to.be.equal(
|
expect(user2RedirectedBalanceAfter.toString()).to.be.equal(
|
||||||
|
@ -250,31 +204,33 @@ makeSuite("AToken: Transfer", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it("User 0 redirects interest to user 2, transfers 500 aDAI to user 1. User 1 redirects to user 3. User 0 transfers another 100 aDAI", async () => {
|
it("User 0 redirects interest to user 2, transfers 500 aDAI to user 1. User 1 redirects to user 3. User 0 transfers another 100 aDAI", async () => {
|
||||||
|
const {users, pool, _aDai, _dai} = testEnv;
|
||||||
|
|
||||||
let aDAItoTransfer = await convertToCurrencyDecimals(_aDai.address, "500");
|
let aDAItoTransfer = await convertToCurrencyDecimals(_aDai.address, "500");
|
||||||
|
|
||||||
await _aDai
|
await _aDai
|
||||||
.connect(users[0])
|
.connect(users[0].signer)
|
||||||
.redirectInterestStream(await users[2].getAddress());
|
.redirectInterestStream(users[2].address);
|
||||||
|
|
||||||
await _aDai
|
await _aDai
|
||||||
.connect(users[0])
|
.connect(users[0].signer)
|
||||||
.transfer(await users[1].getAddress(), aDAItoTransfer);
|
.transfer(users[1].address, aDAItoTransfer);
|
||||||
|
|
||||||
await _aDai
|
await _aDai
|
||||||
.connect(users[1])
|
.connect(users[1].signer)
|
||||||
.redirectInterestStream(await users[3].getAddress());
|
.redirectInterestStream(users[3].address);
|
||||||
|
|
||||||
aDAItoTransfer = await convertToCurrencyDecimals(_aDai.address, "100");
|
aDAItoTransfer = await convertToCurrencyDecimals(_aDai.address, "100");
|
||||||
|
|
||||||
await _aDai
|
await _aDai
|
||||||
.connect(users[0])
|
.connect(users[0].signer)
|
||||||
.transfer(await users[1].getAddress(), aDAItoTransfer);
|
.transfer(users[1].address, aDAItoTransfer);
|
||||||
|
|
||||||
const user2RedirectedBalanceAfter = await _aDai.getRedirectedBalance(
|
const user2RedirectedBalanceAfter = await _aDai.getRedirectedBalance(
|
||||||
await users[2].getAddress()
|
users[2].address
|
||||||
);
|
);
|
||||||
const user3RedirectedBalanceAfter = await _aDai.getRedirectedBalance(
|
const user3RedirectedBalanceAfter = await _aDai.getRedirectedBalance(
|
||||||
await users[3].getAddress()
|
users[3].address
|
||||||
);
|
);
|
||||||
|
|
||||||
const expectedUser2Redirected = await convertToCurrencyDecimals(
|
const expectedUser2Redirected = await convertToCurrencyDecimals(
|
||||||
|
|
|
@ -1,12 +1,87 @@
|
||||||
import { evmRevert, evmSnapshot } from '../../helpers/misc-utils';
|
import {evmRevert, evmSnapshot} from "../../helpers/misc-utils";
|
||||||
import { TEST_SNAPSHOT_ID } from '../../helpers/constants';
|
import {TEST_SNAPSHOT_ID} from "../../helpers/constants";
|
||||||
|
import {Signer} from "ethers";
|
||||||
|
import {
|
||||||
|
getEthersSigners,
|
||||||
|
getLendingPool,
|
||||||
|
getLendingPoolCore,
|
||||||
|
getLendingPoolAddressesProvider,
|
||||||
|
getAaveProtocolTestHelpers,
|
||||||
|
getAToken,
|
||||||
|
getMintableErc20,
|
||||||
|
} from "../../helpers/contracts-helpers";
|
||||||
|
import {tEthereumAddress} from "../../helpers/types";
|
||||||
|
import {LendingPool} from "../../types/LendingPool";
|
||||||
|
import {LendingPoolCore} from "../../types/LendingPoolCore";
|
||||||
|
import {LendingPoolAddressesProvider} from "../../types/LendingPoolAddressesProvider";
|
||||||
|
import {AaveProtocolTestHelpers} from "../../types/AaveProtocolTestHelpers";
|
||||||
|
import {MintableErc20} from "../../types/MintableErc20";
|
||||||
|
import {AToken} from "../../types/AToken";
|
||||||
|
|
||||||
export function makeSuite(name: string, tests: () => void) {
|
export interface SignerWithAddress {
|
||||||
describe(name, function () {
|
signer: Signer;
|
||||||
|
address: tEthereumAddress;
|
||||||
|
}
|
||||||
|
export type TestEnv = {
|
||||||
|
deployer: SignerWithAddress;
|
||||||
|
users: SignerWithAddress[];
|
||||||
|
pool: LendingPool;
|
||||||
|
core: LendingPoolCore;
|
||||||
|
addressesProvider: LendingPoolAddressesProvider;
|
||||||
|
helpersContract: AaveProtocolTestHelpers;
|
||||||
|
_dai: MintableErc20;
|
||||||
|
_aDai: AToken;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function makeSuite(name: string, tests: (testEnv: TestEnv) => void) {
|
||||||
|
describe(name, () => {
|
||||||
|
const testEnv: TestEnv = {
|
||||||
|
deployer: {} as SignerWithAddress,
|
||||||
|
users: [] as SignerWithAddress[],
|
||||||
|
pool: {} as LendingPool,
|
||||||
|
core: {} as LendingPoolCore,
|
||||||
|
} as TestEnv;
|
||||||
before(async () => {
|
before(async () => {
|
||||||
|
console.time("makeSuite");
|
||||||
await evmSnapshot();
|
await evmSnapshot();
|
||||||
|
const [_deployer, ...restSigners] = await getEthersSigners();
|
||||||
|
const deployer: SignerWithAddress = {
|
||||||
|
address: await _deployer.getAddress(),
|
||||||
|
signer: _deployer,
|
||||||
|
};
|
||||||
|
|
||||||
|
for (const signer of restSigners) {
|
||||||
|
testEnv.users.push({
|
||||||
|
signer,
|
||||||
|
address: await signer.getAddress(),
|
||||||
});
|
});
|
||||||
tests();
|
}
|
||||||
|
testEnv.deployer = deployer;
|
||||||
|
testEnv.pool = await getLendingPool();
|
||||||
|
testEnv.core = await getLendingPoolCore();
|
||||||
|
testEnv.addressesProvider = await getLendingPoolAddressesProvider();
|
||||||
|
testEnv.helpersContract = await getAaveProtocolTestHelpers();
|
||||||
|
const aDaiAddress = (await testEnv.helpersContract.getAllATokens()).find(
|
||||||
|
(aToken) => aToken.symbol === "aDAI"
|
||||||
|
)?.tokenAddress;
|
||||||
|
|
||||||
|
const daiAddress = (
|
||||||
|
await await testEnv.helpersContract.getAllReservesTokens()
|
||||||
|
).find((token) => token.symbol === "DAI")?.tokenAddress;
|
||||||
|
if (!aDaiAddress) {
|
||||||
|
console.log(`atoken-modifiers.spec: aDAI not correctly initialized`);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
if (!daiAddress) {
|
||||||
|
console.log(`atoken-modifiers.spec: DAI not correctly initialized`);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
testEnv._aDai = await getAToken(aDaiAddress);
|
||||||
|
testEnv._dai = await getMintableErc20(daiAddress);
|
||||||
|
console.timeEnd("makeSuite");
|
||||||
|
});
|
||||||
|
tests(testEnv);
|
||||||
after(async () => {
|
after(async () => {
|
||||||
await evmRevert(TEST_SNAPSHOT_ID);
|
await evmRevert(TEST_SNAPSHOT_ID);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,18 +1,14 @@
|
||||||
import {expect} from "chai";
|
import {expect} from "chai";
|
||||||
import {MockProvider} from "ethereum-waffle";
|
import {createRandomAddress} from "../helpers/misc-utils";
|
||||||
import {getLendingPoolAddressesProvider} from "../helpers/contracts-helpers";
|
import {makeSuite, TestEnv} from "./helpers/make-suite";
|
||||||
import {createRandomAddress, evmRevert} from "../helpers/misc-utils";
|
|
||||||
import {TEST_SNAPSHOT_ID} from "../helpers/constants";
|
|
||||||
import { makeSuite } from './helpers/make-suite';
|
|
||||||
|
|
||||||
makeSuite("LendingPoolAddressesProvider", () => {
|
|
||||||
const wallets = new MockProvider().getWallets();
|
|
||||||
|
|
||||||
|
makeSuite("LendingPoolAddressesProvider", (testEnv: TestEnv) => {
|
||||||
it("Test the accessibility of the LendingPoolAddressesProvider", async () => {
|
it("Test the accessibility of the LendingPoolAddressesProvider", async () => {
|
||||||
|
const {addressesProvider, users} = testEnv;
|
||||||
const mockAddress = createRandomAddress();
|
const mockAddress = createRandomAddress();
|
||||||
const INVALID_OWNER_REVERT_MSG = "Ownable: caller is not the owner";
|
const INVALID_OWNER_REVERT_MSG = "Ownable: caller is not the owner";
|
||||||
const addressesProvider = await getLendingPoolAddressesProvider();
|
|
||||||
await addressesProvider.transferOwnership(wallets[1].address);
|
await addressesProvider.transferOwnership(users[1].address);
|
||||||
|
|
||||||
for (const contractFunction of [
|
for (const contractFunction of [
|
||||||
addressesProvider.setFeeProviderImpl,
|
addressesProvider.setFeeProviderImpl,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user