From c561feaa93e8ba6a6f882e2ff68306b4536d2fda Mon Sep 17 00:00:00 2001 From: David Chang Date: Fri, 3 Jun 2022 22:15:56 +0800 Subject: [PATCH 1/2] : add test case for aave allocator --- test/allocators/AaveAllocator.test.ts | 81 +++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 test/allocators/AaveAllocator.test.ts diff --git a/test/allocators/AaveAllocator.test.ts b/test/allocators/AaveAllocator.test.ts new file mode 100644 index 000000000..5d05b57de --- /dev/null +++ b/test/allocators/AaveAllocator.test.ts @@ -0,0 +1,81 @@ +import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/dist/src/signer-with-address"; +import chai, { expect } from "chai"; +import { ethers } from "hardhat"; +const { BigNumber } = ethers; +import { FakeContract, smock } from "@defi-wonderland/smock"; +import { + IERC20, + IERC20Metadata, + ITreasury, + IStabilityPool, + ILQTYStaking, + ISwapRouter, + LUSDAllocator, + AaveAllocator, + AaveAllocator__factory, + LUSDAllocator__factory, + OlympusAuthority, + OlympusAuthority__factory, +} from "../../types"; +const { fork_network, fork_reset } = require("../utils/network_fork"); +const impersonateAccount = require("../utils/impersonate_account"); +const { advanceBlock, duration, increase } = require("../utils/advancement"); +const lusdAbi = require("../../abis/lusd.json"); +const lusdStabilityPoolAbi = require("../../abis/lusd_stability_pool.json"); +const oldTreasuryAbi = require("../../abis/old_treasury_abi.json"); + +chai.use(smock.matchers); + +const ZERO_ADDRESS = ethers.utils.getAddress("0x0000000000000000000000000000000000000000"); + +describe("AaveAllocator", () => { + describe("unit tests", () => { + let owner: SignerWithAddress; + let governor: SignerWithAddress; + let guardian: SignerWithAddress; + let other: SignerWithAddress; + let alice: SignerWithAddress; + let bob: SignerWithAddress; + let treasuryFake: FakeContract; + let stabilityPoolFake: FakeContract; + let lqtyStakingFake: FakeContract; + let lusdTokenFake: FakeContract; + let lqtyTokenFake: FakeContract; + let wethTokenFake: FakeContract; + let daiTokenFake: FakeContract; + let swapRouterFake: FakeContract; + let lusdAllocator: LUSDAllocator; + let aaveAllocator: AaveAllocator; + let authority: OlympusAuthority; + + beforeEach(async () => { + [owner, governor, guardian, other, alice, bob] = await ethers.getSigners(); + treasuryFake = await smock.fake("ITreasury"); + stabilityPoolFake = await smock.fake("IStabilityPool"); + lqtyStakingFake = await smock.fake("ILQTYStaking"); + lusdTokenFake = await smock.fake( + "contracts/interfaces/IERC20Metadata.sol:IERC20Metadata" + ); + lqtyTokenFake = await smock.fake( + "contracts/interfaces/IERC20Metadata.sol:IERC20Metadata" + ); + wethTokenFake = await smock.fake("contracts/interfaces/IERC20.sol:IERC20"); + daiTokenFake = await smock.fake("contracts/interfaces/IERC20.sol:IERC20"); + swapRouterFake = await smock.fake("ISwapRouter"); + authority = await new OlympusAuthority__factory(owner).deploy( + governor.address, + guardian.address, + owner.address, + owner.address + ); + }); + describe("constructor", () => { + it("can construct", async () => { + aaveAllocator = await new AaveAllocator__factory(owner).deploy( + authority.address, + ); + expect(await aaveAllocator.referralCode()).to.equal(0); + }); + }); + }); +}); From 9414f5956142fa07907e25196f10d90cdca9a260 Mon Sep 17 00:00:00 2001 From: David Chang Date: Mon, 6 Jun 2022 21:32:53 +0800 Subject: [PATCH 2/2] (allocator): removed some unused variables --- test/allocators/AaveAllocator.test.ts | 55 +++++++++++++++++---------- 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/test/allocators/AaveAllocator.test.ts b/test/allocators/AaveAllocator.test.ts index 5d05b57de..6f15c5012 100644 --- a/test/allocators/AaveAllocator.test.ts +++ b/test/allocators/AaveAllocator.test.ts @@ -20,14 +20,9 @@ import { const { fork_network, fork_reset } = require("../utils/network_fork"); const impersonateAccount = require("../utils/impersonate_account"); const { advanceBlock, duration, increase } = require("../utils/advancement"); -const lusdAbi = require("../../abis/lusd.json"); -const lusdStabilityPoolAbi = require("../../abis/lusd_stability_pool.json"); -const oldTreasuryAbi = require("../../abis/old_treasury_abi.json"); chai.use(smock.matchers); -const ZERO_ADDRESS = ethers.utils.getAddress("0x0000000000000000000000000000000000000000"); - describe("AaveAllocator", () => { describe("unit tests", () => { let owner: SignerWithAddress; @@ -38,13 +33,8 @@ describe("AaveAllocator", () => { let bob: SignerWithAddress; let treasuryFake: FakeContract; let stabilityPoolFake: FakeContract; - let lqtyStakingFake: FakeContract; - let lusdTokenFake: FakeContract; - let lqtyTokenFake: FakeContract; - let wethTokenFake: FakeContract; let daiTokenFake: FakeContract; - let swapRouterFake: FakeContract; - let lusdAllocator: LUSDAllocator; + let adaiTokenFake: FakeContract; let aaveAllocator: AaveAllocator; let authority: OlympusAuthority; @@ -52,16 +42,8 @@ describe("AaveAllocator", () => { [owner, governor, guardian, other, alice, bob] = await ethers.getSigners(); treasuryFake = await smock.fake("ITreasury"); stabilityPoolFake = await smock.fake("IStabilityPool"); - lqtyStakingFake = await smock.fake("ILQTYStaking"); - lusdTokenFake = await smock.fake( - "contracts/interfaces/IERC20Metadata.sol:IERC20Metadata" - ); - lqtyTokenFake = await smock.fake( - "contracts/interfaces/IERC20Metadata.sol:IERC20Metadata" - ); - wethTokenFake = await smock.fake("contracts/interfaces/IERC20.sol:IERC20"); daiTokenFake = await smock.fake("contracts/interfaces/IERC20.sol:IERC20"); - swapRouterFake = await smock.fake("ISwapRouter"); + adaiTokenFake = await smock.fake("contracts/interfaces/IERC20.sol:IERC20"); authority = await new OlympusAuthority__factory(owner).deploy( governor.address, guardian.address, @@ -75,7 +57,40 @@ describe("AaveAllocator", () => { authority.address, ); expect(await aaveAllocator.referralCode()).to.equal(0); + await aaveAllocator.addToken(daiTokenFake.address, adaiTokenFake.address, 100) + }); + }); + + describe("post-constructor", () => { + beforeEach(async () => { + aaveAllocator = await new AaveAllocator__factory(owner).deploy( + authority.address, + ); + }); + + describe("setter tests", () => { + it("invalid setReferralCode", async () => { + try { + await expect(aaveAllocator.connect(owner).setReferralCode(-1)) + .to.be.revertedWith("value out-of-bounds (argument=\"code\", value=-1, code=INVALID_ARGUMENT, version=abi/5.5.0)"); + } catch (error) { + console.log(error) + } + }); + it("valid setReferralCode", async () => { + await aaveAllocator.connect(owner).setReferralCode(65535); + await aaveAllocator.connect(owner).setReferralCode(0); + }); }); }); + // WIP + // describe("deposit", () => { + // it("not guardian", async () => { + // await expect(aaveAllocator.connect(owner).deposit(daiTokenFake.address, 1)).to.be.revertedWith( + // "UNAUTHORIZED" + // ); + // }); + // }); + }); });