fix: Update fork-tests for ARC market

This commit is contained in:
miguelmtzinf 2021-11-03 13:49:40 +01:00
parent c74908cc42
commit b533f961d2
2 changed files with 38 additions and 53 deletions

View File

@ -38,7 +38,7 @@ contract PermissionedWETHGateway is WETHGateway {
ILendingPool pool = ILendingPool(lendingPool); ILendingPool pool = ILendingPool(lendingPool);
require( require(
_isInRoleAndValidPermissionAdmin(msg.sender, DataTypes.Roles.DEPOSITOR, pool), _isInRoleAndValidPermissionAdmin(onBehalfOf, DataTypes.Roles.DEPOSITOR, pool),
Errors.PLP_USER_UNAUTHORIZED Errors.PLP_USER_UNAUTHORIZED
); );
@ -60,7 +60,7 @@ contract PermissionedWETHGateway is WETHGateway {
) public payable override { ) public payable override {
ILendingPool pool = ILendingPool(lendingPool); ILendingPool pool = ILendingPool(lendingPool);
require(_isInRole(msg.sender, DataTypes.Roles.BORROWER, pool), Errors.PLP_USER_UNAUTHORIZED); require(_isInRole(onBehalfOf, DataTypes.Roles.BORROWER, pool), Errors.PLP_USER_UNAUTHORIZED);
super.repayETH(lendingPool, amount, rateMode, onBehalfOf); super.repayETH(lendingPool, amount, rateMode, onBehalfOf);
} }

View File

@ -24,11 +24,11 @@ import {
MockAggregatorFactory, MockAggregatorFactory,
PermissionedWETHGateway, PermissionedWETHGateway,
PermissionedWETHGatewayFactory, PermissionedWETHGatewayFactory,
LendingPoolCollateralManagerFactory,
} from '../../../types'; } from '../../../types';
import { ProtocolErrors, RateMode } from '../../../helpers/types'; import { ProtocolErrors, RateMode } from '../../../helpers/types';
import { getFirstSigner } from '../../../helpers/contracts-getters'; import { getFirstSigner } from '../../../helpers/contracts-getters';
import { convertToCurrencyDecimals, getEthersSigners } from '../../../helpers/contracts-helpers'; import { convertToCurrencyDecimals, getEthersSigners } from '../../../helpers/contracts-helpers';
import { JsonRpcSigner } from '@ethersproject/providers';
const PERMISSIONS = { const PERMISSIONS = {
DEPOSITOR: 0, DEPOSITOR: 0,
@ -83,11 +83,11 @@ describe('Aave ARC fork test', () => {
let ethers; let ethers;
let users: Signer[]; let users: Signer[];
let ethHolder: JsonRpcSigner; let ethHolder: Signer;
let usdcHolder: JsonRpcSigner; let usdcHolder: Signer;
let aaveHolder: JsonRpcSigner; let aaveHolder: Signer;
let wbtcHolder: JsonRpcSigner; let wbtcHolder: Signer;
let wethHolder: JsonRpcSigner; let wethHolder: Signer;
let usdc: ERC20; let usdc: ERC20;
let aave: ERC20; let aave: ERC20;
let wbtc: ERC20; let wbtc: ERC20;
@ -97,11 +97,11 @@ describe('Aave ARC fork test', () => {
let provider: LendingPoolAddressesProvider; let provider: LendingPoolAddressesProvider;
let configurator: LendingPoolConfigurator; let configurator: LendingPoolConfigurator;
let oracle: AaveOracle; let oracle: AaveOracle;
let oracleAdmin: JsonRpcSigner; let oracleAdmin: Signer;
let helpersContract: AaveProtocolDataProvider; let helpersContract: AaveProtocolDataProvider;
let permissionManager: PermissionManager; let permissionManager: PermissionManager;
let permissionManagerAdmin: JsonRpcSigner; let permissionManagerAdmin: Signer;
let emergencyAdmin: JsonRpcSigner; let emergencyAdmin: Signer;
let wethGateway: PermissionedWETHGateway; let wethGateway: PermissionedWETHGateway;
const { const {
@ -114,12 +114,7 @@ describe('Aave ARC fork test', () => {
PLP_INVALID_PERMISSION_ADMIN, PLP_INVALID_PERMISSION_ADMIN,
} = ProtocolErrors; } = ProtocolErrors;
const topUpWithERC20 = async ( const topUpWithERC20 = async (asset: ERC20, holder: Signer, to: string, amount: string) => {
asset: ERC20,
holder: JsonRpcSigner,
to: string,
amount: string
) => {
await asset await asset
.connect(holder) .connect(holder)
.transfer(to, await convertToCurrencyDecimals(asset.address, amount)); .transfer(to, await convertToCurrencyDecimals(asset.address, amount));
@ -161,10 +156,24 @@ describe('Aave ARC fork test', () => {
users[0] users[0]
); );
permissionManager = await PermissionManagerFactory.connect(config.PermissionManager, users[0]); permissionManager = await PermissionManagerFactory.connect(config.PermissionManager, users[0]);
wethGateway = await PermissionedWETHGatewayFactory.connect( });
config.PermissionedWETHGateway,
users[0] it('Deploy the PermissionedWethGateway', async () => {
); wethGateway = await (
await new PermissionedWETHGatewayFactory(users[0]).deploy(WETH_ADDRESS)
).deployed();
await wethGateway.authorizeLendingPool(pool.address);
});
it('Deploy the LendingPoolCollateralManager and register it at LendingPoolAddressesProvider', async () => {
const poolCollateralManager = await new LendingPoolCollateralManagerFactory(users[0]).deploy();
const providerAdminAddress = await provider.owner();
await impersonateAccountsHardhat([providerAdminAddress]);
const providerAdmin = ethers.provider.getSigner(providerAdminAddress);
await provider
.connect(providerAdmin)
.setLendingPoolCollateralManager(poolCollateralManager.address);
}); });
it('Pool Data', async () => { it('Pool Data', async () => {
@ -177,7 +186,7 @@ describe('Aave ARC fork test', () => {
console.log(token.symbol, '-', token.tokenAddress); console.log(token.symbol, '-', token.tokenAddress);
reserveData = await helpersContract.getReserveData(token.tokenAddress); reserveData = await helpersContract.getReserveData(token.tokenAddress);
reserveTokens = await helpersContract.getReserveTokensAddresses(token.tokenAddress); reserveTokens = await helpersContract.getReserveTokensAddresses(token.tokenAddress);
console.log(reserveData); // console.log(reserveData);
aToken = await ATokenFactory.connect(reserveTokens.aTokenAddress, users[0]); aToken = await ATokenFactory.connect(reserveTokens.aTokenAddress, users[0]);
console.log('IncentivesController: ', await aToken.getIncentivesController()); console.log('IncentivesController: ', await aToken.getIncentivesController());
} }
@ -233,10 +242,10 @@ describe('Aave ARC fork test', () => {
'0' '0'
); );
console.log(await helpersContract.getReserveData(usdc.address)); // console.log(await helpersContract.getReserveData(usdc.address));
console.log( // console.log(
await helpersContract.getUserReserveData(usdc.address, await users[2].getAddress()) // await helpersContract.getUserReserveData(usdc.address, await users[2].getAddress())
); // );
await aave.connect(users[2]).approve(pool.address, MAX_UINT_AMOUNT); await aave.connect(users[2]).approve(pool.address, MAX_UINT_AMOUNT);
await topUpWithERC20(aave, aaveHolder, await users[2].getAddress(), '10'); await topUpWithERC20(aave, aaveHolder, await users[2].getAddress(), '10');
@ -319,9 +328,9 @@ describe('Aave ARC fork test', () => {
}); });
it('Admin User1 seizes the AAVE collateral of User2', async () => { it('Admin User1 seizes the AAVE collateral of User2', async () => {
console.log( // console.log(
await helpersContract.getUserReserveData(aave.address, await users[2].getAddress()) // await helpersContract.getUserReserveData(aave.address, await users[2].getAddress())
); // );
const aaveData = await helpersContract.getReserveTokensAddresses(aave.address); const aaveData = await helpersContract.getReserveTokensAddresses(aave.address);
const aToken = await ATokenFactory.connect(aaveData.aTokenAddress, users[0]); const aToken = await ATokenFactory.connect(aaveData.aTokenAddress, users[0]);
console.log('aToken balance of aave: ', await aave.balanceOf(aToken.address)); console.log('aToken balance of aave: ', await aave.balanceOf(aToken.address));
@ -517,30 +526,6 @@ describe('Aave ARC fork test', () => {
.addPermissions([PERMISSIONS.DEPOSITOR], [await users[7].getAddress()]); .addPermissions([PERMISSIONS.DEPOSITOR], [await users[7].getAddress()]);
}); });
it('Deploy new PermissionedWethGateway for User6 Admin and give it permissions', async () => {
// Deploy and approve
const ourWethGateway = (await (
await new PermissionedWETHGatewayFactory(await getFirstSigner()).deploy(WETH_ADDRESS)
).deployed()) as PermissionedWETHGateway;
await ourWethGateway.authorizeLendingPool(pool.address);
// Permission
await permissionManager
.connect(users[6])
.addPermissions([PERMISSIONS.DEPOSITOR], [ourWethGateway.address]);
// Deposit
await ethHolder.sendTransaction({
to: await users[7].getAddress(),
value: ethers.utils.parseEther('2'),
});
await ourWethGateway
.connect(users[7])
.depositETH(pool.address, await users[7].getAddress(), 0, {
value: ethers.utils.parseEther('2'),
});
});
it('User6 tries to seize the WETH collateral of User2 (which is not under its control) (revert expected)', async () => { it('User6 tries to seize the WETH collateral of User2 (which is not under its control) (revert expected)', async () => {
await expect( await expect(
pool pool