tests: fixed tests to support latest changes

This commit is contained in:
David Racero 2021-07-14 16:56:03 +02:00 committed by miguelmtzinf
parent 95e9c3588c
commit 4b217fff84
4 changed files with 67 additions and 42 deletions

View File

@ -39,7 +39,11 @@ export const loadPoolConfig = (configName: ConfigNames): PoolConfiguration => {
case ConfigNames.Commons: case ConfigNames.Commons:
return CommonsConfig; return CommonsConfig;
default: default:
throw new Error(`Unsupported pool configuration: ${Object.values(ConfigNames)}`); throw new Error(
`Unsupported pool configuration: ${configName} is not one of the supported configs ${Object.values(
ConfigNames
)}`
);
} }
}; };

2
package-lock.json generated
View File

@ -14793,7 +14793,7 @@
} }
}, },
"ethereumjs-abi": { "ethereumjs-abi": {
"version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#1a27c59c15ab1e95ee8e5c4ed6ad814c49cc439e", "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#ee3994657fa7a427238e6ba92a84d0b529bbcde0",
"from": "git+https://github.com/ethereumjs/ethereumjs-abi.git", "from": "git+https://github.com/ethereumjs/ethereumjs-abi.git",
"dev": true, "dev": true,
"requires": { "requires": {

View File

@ -13,7 +13,7 @@ import {
deployLendingPoolConfigurator, deployLendingPoolConfigurator,
deployLendingPool, deployLendingPool,
deployPriceOracle, deployPriceOracle,
deployAaveOracle, deployAaveOracleV2,
deployLendingPoolCollateralManager, deployLendingPoolCollateralManager,
deployMockFlashLoanReceiver, deployMockFlashLoanReceiver,
deployWalletBalancerProvider, deployWalletBalancerProvider,
@ -28,8 +28,8 @@ import {
deployUniswapRepayAdapter, deployUniswapRepayAdapter,
deployFlashLiquidationAdapter, deployFlashLiquidationAdapter,
authorizeWETHGateway, authorizeWETHGateway,
deployATokenImplementations,
} from '../../helpers/contracts-deployments'; } from '../../helpers/contracts-deployments';
import { eEthereumNetwork } from '../../helpers/types';
import { Signer } from 'ethers'; import { Signer } from 'ethers';
import { TokenContractId, eContractid, tEthereumAddress, AavePools } from '../../helpers/types'; import { TokenContractId, eContractid, tEthereumAddress, AavePools } from '../../helpers/types';
import { MintableERC20 } from '../../types/MintableERC20'; import { MintableERC20 } from '../../types/MintableERC20';
@ -49,7 +49,7 @@ import {
import { DRE, waitForTx } from '../../helpers/misc-utils'; import { DRE, waitForTx } from '../../helpers/misc-utils';
import { initReservesByHelper, configureReservesByHelper } from '../../helpers/init-helpers'; import { initReservesByHelper, configureReservesByHelper } from '../../helpers/init-helpers';
import AaveConfig from '../../markets/aave'; import AaveConfig from '../../markets/aave';
import { ZERO_ADDRESS } from '../../helpers/constants'; import { oneEther, ZERO_ADDRESS } from '../../helpers/constants';
import { import {
getLendingPool, getLendingPool,
getLendingPoolConfiguratorProxy, getLendingPoolConfiguratorProxy,
@ -60,7 +60,6 @@ import { WETH9Mocked } from '../../types/WETH9Mocked';
const MOCK_USD_PRICE_IN_WEI = AaveConfig.ProtocolGlobalParams.MockUsdPriceInWei; const MOCK_USD_PRICE_IN_WEI = AaveConfig.ProtocolGlobalParams.MockUsdPriceInWei;
const ALL_ASSETS_INITIAL_PRICES = AaveConfig.Mocks.AllAssetsInitialPrices; const ALL_ASSETS_INITIAL_PRICES = AaveConfig.Mocks.AllAssetsInitialPrices;
const USD_ADDRESS = AaveConfig.ProtocolGlobalParams.UsdAddress; const USD_ADDRESS = AaveConfig.ProtocolGlobalParams.UsdAddress;
const MOCK_CHAINLINK_AGGREGATORS_PRICES = AaveConfig.Mocks.AllAssetsInitialPrices;
const LENDING_RATE_ORACLE_RATES_COMMON = AaveConfig.LendingRateOracleRatesCommon; const LENDING_RATE_ORACLE_RATES_COMMON = AaveConfig.LendingRateOracleRatesCommon;
const deployAllMockTokens = async (deployer: Signer) => { const deployAllMockTokens = async (deployer: Signer) => {
@ -96,9 +95,13 @@ const deployAllMockTokens = async (deployer: Signer) => {
const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => { const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
console.time('setup'); console.time('setup');
const aaveAdmin = await deployer.getAddress(); const aaveAdmin = await deployer.getAddress();
const config = loadPoolConfig(ConfigNames.Aave);
const mockTokens = await deployAllMockTokens(deployer); const mockTokens: {
console.log('Deployed mocks'); [symbol: string]: MockContract | MintableERC20 | WETH9Mocked;
} = {
...(await deployAllMockTokens(deployer)),
};
const addressesProvider = await deployLendingPoolAddressesProvider(AaveConfig.MarketId); const addressesProvider = await deployLendingPoolAddressesProvider(AaveConfig.MarketId);
await waitForTx(await addressesProvider.setPoolAdmin(aaveAdmin)); await waitForTx(await addressesProvider.setPoolAdmin(aaveAdmin));
@ -196,8 +199,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
fallbackOracle fallbackOracle
); );
const mockAggregators = await deployAllMockAggregators(MOCK_CHAINLINK_AGGREGATORS_PRICES); const mockAggregators = await deployAllMockAggregators(ALL_ASSETS_INITIAL_PRICES);
console.log('Mock aggs deployed');
const allTokenAddresses = Object.entries(mockTokens).reduce( const allTokenAddresses = Object.entries(mockTokens).reduce(
(accum: { [tokenSymbol: string]: tEthereumAddress }, [tokenSymbol, tokenContract]) => ({ (accum: { [tokenSymbol: string]: tEthereumAddress }, [tokenSymbol, tokenContract]) => ({
...accum, ...accum,
@ -213,9 +215,19 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
{} {}
); );
const [tokens, aggregators] = getPairsTokenAggregator(allTokenAddresses, allAggregatorsAddresses); const [tokens, aggregators] = getPairsTokenAggregator(
allTokenAddresses,
allAggregatorsAddresses,
config.OracleQuoteCurrency
);
await deployAaveOracle([tokens, aggregators, fallbackOracle.address, mockTokens.WETH.address]); await deployAaveOracleV2([
tokens,
aggregators,
fallbackOracle.address,
mockTokens.WETH.address,
oneEther.toString(),
]);
await waitForTx(await addressesProvider.setPriceOracle(fallbackOracle.address)); await waitForTx(await addressesProvider.setPriceOracle(fallbackOracle.address));
const lendingRateOracle = await deployLendingRateOracle(); const lendingRateOracle = await deployLendingRateOracle();
@ -232,23 +244,19 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
aaveAdmin aaveAdmin
); );
const reservesParams = getReservesConfigByPool(AavePools.proto); // Reserve params from AAVE pool + mocked tokens
const reservesParams = {
...config.ReservesConfig,
};
const testHelpers = await deployAaveProtocolDataProvider(addressesProvider.address); const testHelpers = await deployAaveProtocolDataProvider(addressesProvider.address);
await insertContractAddressInDb(eContractid.AaveProtocolDataProvider, testHelpers.address); await deployATokenImplementations(ConfigNames.Aave, reservesParams, false);
const admin = await deployer.getAddress(); const admin = await deployer.getAddress();
console.log('Initialize configuration'); const { ATokenNamePrefix, StableDebtTokenNamePrefix, VariableDebtTokenNamePrefix, SymbolPrefix } =
config;
const config = loadPoolConfig(ConfigNames.Aave);
const {
ATokenNamePrefix,
StableDebtTokenNamePrefix,
VariableDebtTokenNamePrefix,
SymbolPrefix,
} = config;
const treasuryAddress = await getTreasuryAddress(config); const treasuryAddress = await getTreasuryAddress(config);
await initReservesByHelper( await initReservesByHelper(
@ -261,6 +269,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
admin, admin,
treasuryAddress, treasuryAddress,
ZERO_ADDRESS, ZERO_ADDRESS,
ConfigNames.Aave,
false false
); );
@ -298,7 +307,7 @@ before(async () => {
const FORK = process.env.FORK; const FORK = process.env.FORK;
if (FORK) { if (FORK) {
await rawBRE.run('aave:mainnet'); await rawBRE.run('aave:mainnet', { skipRegistry: true });
} else { } else {
console.log('-> Deploying test environment...'); console.log('-> Deploying test environment...');
await buildTestEnv(deployer, secondaryWallet); await buildTestEnv(deployer, secondaryWallet);

View File

@ -13,7 +13,7 @@ import {
deployLendingPoolConfigurator, deployLendingPoolConfigurator,
deployLendingPool, deployLendingPool,
deployPriceOracle, deployPriceOracle,
deployAaveOracle, deployAaveOracleV2,
deployLendingPoolCollateralManager, deployLendingPoolCollateralManager,
deployMockFlashLoanReceiver, deployMockFlashLoanReceiver,
deployWalletBalancerProvider, deployWalletBalancerProvider,
@ -28,6 +28,7 @@ import {
deployUniswapRepayAdapter, deployUniswapRepayAdapter,
deployFlashLiquidationAdapter, deployFlashLiquidationAdapter,
authorizeWETHGateway, authorizeWETHGateway,
deployATokenImplementations,
} from '../../helpers/contracts-deployments'; } from '../../helpers/contracts-deployments';
import { Signer } from 'ethers'; import { Signer } from 'ethers';
import { TokenContractId, eContractid, tEthereumAddress, AavePools } from '../../helpers/types'; import { TokenContractId, eContractid, tEthereumAddress, AavePools } from '../../helpers/types';
@ -48,7 +49,7 @@ import {
import { DRE, waitForTx } from '../../helpers/misc-utils'; import { DRE, waitForTx } from '../../helpers/misc-utils';
import { initReservesByHelper, configureReservesByHelper } from '../../helpers/init-helpers'; import { initReservesByHelper, configureReservesByHelper } from '../../helpers/init-helpers';
import AmmConfig from '../../markets/amm'; import AmmConfig from '../../markets/amm';
import { ZERO_ADDRESS } from '../../helpers/constants'; import { oneEther, ZERO_ADDRESS } from '../../helpers/constants';
import { import {
getLendingPool, getLendingPool,
getLendingPoolConfiguratorProxy, getLendingPoolConfiguratorProxy,
@ -95,6 +96,14 @@ const deployAllMockTokens = async (deployer: Signer) => {
const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => { const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
console.time('setup'); console.time('setup');
const aaveAdmin = await deployer.getAddress(); const aaveAdmin = await deployer.getAddress();
const config = loadPoolConfig(ConfigNames.Amm);
const {
ATokenNamePrefix,
StableDebtTokenNamePrefix,
VariableDebtTokenNamePrefix,
SymbolPrefix,
ReservesConfig,
} = config;
const mockTokens = await deployAllMockTokens(deployer); const mockTokens = await deployAllMockTokens(deployer);
@ -189,6 +198,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
WMATIC: mockTokens.WMATIC.address, WMATIC: mockTokens.WMATIC.address,
USD: USD_ADDRESS, USD: USD_ADDRESS,
STAKE: mockTokens.STAKE.address, STAKE: mockTokens.STAKE.address,
xSUSHI: ZERO_ADDRESS,
}, },
fallbackOracle fallbackOracle
); );
@ -210,9 +220,19 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
{} {}
); );
const [tokens, aggregators] = getPairsTokenAggregator(allTokenAddresses, allAggregatorsAddresses); const [tokens, aggregators] = getPairsTokenAggregator(
allTokenAddresses,
allAggregatorsAddresses,
config.OracleQuoteCurrency
);
await deployAaveOracle([tokens, aggregators, fallbackOracle.address, mockTokens.WETH.address]); await deployAaveOracleV2([
tokens,
aggregators,
fallbackOracle.address,
mockTokens.WETH.address,
oneEther.toString(),
]);
await waitForTx(await addressesProvider.setPriceOracle(fallbackOracle.address)); await waitForTx(await addressesProvider.setPriceOracle(fallbackOracle.address));
const lendingRateOracle = await deployLendingRateOracle(); const lendingRateOracle = await deployLendingRateOracle();
@ -228,8 +248,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
lendingRateOracle, lendingRateOracle,
aaveAdmin aaveAdmin
); );
await deployATokenImplementations(ConfigNames.Amm, ReservesConfig);
const reservesParams = getReservesConfigByPool(AavePools.amm);
const testHelpers = await deployAaveProtocolDataProvider(addressesProvider.address); const testHelpers = await deployAaveProtocolDataProvider(addressesProvider.address);
@ -238,18 +257,10 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
console.log('Initialize configuration'); console.log('Initialize configuration');
const config = loadPoolConfig(ConfigNames.Amm);
const {
ATokenNamePrefix,
StableDebtTokenNamePrefix,
VariableDebtTokenNamePrefix,
SymbolPrefix,
} = config;
const treasuryAddress = await getTreasuryAddress(config); const treasuryAddress = await getTreasuryAddress(config);
await initReservesByHelper( await initReservesByHelper(
reservesParams, ReservesConfig,
allReservesAddresses, allReservesAddresses,
ATokenNamePrefix, ATokenNamePrefix,
StableDebtTokenNamePrefix, StableDebtTokenNamePrefix,
@ -258,9 +269,10 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
admin, admin,
treasuryAddress, treasuryAddress,
ZERO_ADDRESS, ZERO_ADDRESS,
ConfigNames.Amm,
false false
); );
await configureReservesByHelper(reservesParams, allReservesAddresses, testHelpers, admin); await configureReservesByHelper(ReservesConfig, allReservesAddresses, testHelpers, admin);
const collateralManager = await deployLendingPoolCollateralManager(); const collateralManager = await deployLendingPoolCollateralManager();
await waitForTx( await waitForTx(
@ -294,7 +306,7 @@ before(async () => {
const FORK = process.env.FORK; const FORK = process.env.FORK;
if (FORK) { if (FORK) {
await rawBRE.run('amm:mainnet'); await rawBRE.run('amm:mainnet', { skipRegistry: true });
} else { } else {
console.log('-> Deploying test environment...'); console.log('-> Deploying test environment...');
await buildTestEnv(deployer, secondaryWallet); await buildTestEnv(deployer, secondaryWallet);