diff --git a/contracts/misc/PermissionedWETHGateway.sol b/contracts/misc/PermissionedWETHGateway.sol index 8d83eb0d..1042660f 100644 --- a/contracts/misc/PermissionedWETHGateway.sol +++ b/contracts/misc/PermissionedWETHGateway.sol @@ -38,7 +38,7 @@ contract PermissionedWETHGateway is WETHGateway { ILendingPool pool = ILendingPool(lendingPool); require( - _isInRoleAndValidPermissionAdmin(msg.sender, DataTypes.Roles.DEPOSITOR, pool), + _isInRoleAndValidPermissionAdmin(onBehalfOf, DataTypes.Roles.DEPOSITOR, pool), Errors.PLP_USER_UNAUTHORIZED ); @@ -60,7 +60,7 @@ contract PermissionedWETHGateway is WETHGateway { ) public payable override { 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); } diff --git a/test-suites/test-aave/mainnet/pro-test.spec.ts b/test-suites/test-aave/mainnet/pro-test.spec.ts index 8f692652..33e54c20 100644 --- a/test-suites/test-aave/mainnet/pro-test.spec.ts +++ b/test-suites/test-aave/mainnet/pro-test.spec.ts @@ -24,11 +24,11 @@ import { MockAggregatorFactory, PermissionedWETHGateway, PermissionedWETHGatewayFactory, + LendingPoolCollateralManagerFactory, } from '../../../types'; import { ProtocolErrors, RateMode } from '../../../helpers/types'; import { getFirstSigner } from '../../../helpers/contracts-getters'; import { convertToCurrencyDecimals, getEthersSigners } from '../../../helpers/contracts-helpers'; -import { JsonRpcSigner } from '@ethersproject/providers'; const PERMISSIONS = { DEPOSITOR: 0, @@ -83,11 +83,11 @@ describe('Aave ARC fork test', () => { let ethers; let users: Signer[]; - let ethHolder: JsonRpcSigner; - let usdcHolder: JsonRpcSigner; - let aaveHolder: JsonRpcSigner; - let wbtcHolder: JsonRpcSigner; - let wethHolder: JsonRpcSigner; + let ethHolder: Signer; + let usdcHolder: Signer; + let aaveHolder: Signer; + let wbtcHolder: Signer; + let wethHolder: Signer; let usdc: ERC20; let aave: ERC20; let wbtc: ERC20; @@ -97,11 +97,11 @@ describe('Aave ARC fork test', () => { let provider: LendingPoolAddressesProvider; let configurator: LendingPoolConfigurator; let oracle: AaveOracle; - let oracleAdmin: JsonRpcSigner; + let oracleAdmin: Signer; let helpersContract: AaveProtocolDataProvider; let permissionManager: PermissionManager; - let permissionManagerAdmin: JsonRpcSigner; - let emergencyAdmin: JsonRpcSigner; + let permissionManagerAdmin: Signer; + let emergencyAdmin: Signer; let wethGateway: PermissionedWETHGateway; const { @@ -114,12 +114,7 @@ describe('Aave ARC fork test', () => { PLP_INVALID_PERMISSION_ADMIN, } = ProtocolErrors; - const topUpWithERC20 = async ( - asset: ERC20, - holder: JsonRpcSigner, - to: string, - amount: string - ) => { + const topUpWithERC20 = async (asset: ERC20, holder: Signer, to: string, amount: string) => { await asset .connect(holder) .transfer(to, await convertToCurrencyDecimals(asset.address, amount)); @@ -161,10 +156,24 @@ describe('Aave ARC fork test', () => { 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 () => { @@ -177,7 +186,7 @@ describe('Aave ARC fork test', () => { console.log(token.symbol, '-', token.tokenAddress); reserveData = await helpersContract.getReserveData(token.tokenAddress); reserveTokens = await helpersContract.getReserveTokensAddresses(token.tokenAddress); - console.log(reserveData); + // console.log(reserveData); aToken = await ATokenFactory.connect(reserveTokens.aTokenAddress, users[0]); console.log('IncentivesController: ', await aToken.getIncentivesController()); } @@ -233,10 +242,10 @@ describe('Aave ARC fork test', () => { '0' ); - console.log(await helpersContract.getReserveData(usdc.address)); - console.log( - await helpersContract.getUserReserveData(usdc.address, await users[2].getAddress()) - ); + // console.log(await helpersContract.getReserveData(usdc.address)); + // console.log( + // await helpersContract.getUserReserveData(usdc.address, await users[2].getAddress()) + // ); await aave.connect(users[2]).approve(pool.address, MAX_UINT_AMOUNT); 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 () => { - console.log( - await helpersContract.getUserReserveData(aave.address, await users[2].getAddress()) - ); + // console.log( + // await helpersContract.getUserReserveData(aave.address, await users[2].getAddress()) + // ); const aaveData = await helpersContract.getReserveTokensAddresses(aave.address); const aToken = await ATokenFactory.connect(aaveData.aTokenAddress, users[0]); 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()]); }); - 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 () => { await expect( pool