Skip to content

Commit

Permalink
fix: creditManagerV3unitTest fixed
Browse files Browse the repository at this point in the history
  • Loading branch information
0xmikko committed May 15, 2023
1 parent 2948247 commit 993b200
Show file tree
Hide file tree
Showing 16 changed files with 183 additions and 116 deletions.
5 changes: 3 additions & 2 deletions contracts/pool/Pool4626.sol
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet
import {IWETH} from "@gearbox-protocol/core-v2/contracts/interfaces/external/IWETH.sol";
import {IERC4626} from "@openzeppelin/contracts/interfaces/IERC4626.sol";

import {IAddressProviderV3, AP_TREASURY} from "../interfaces/IAddressProviderV3.sol";
import {IAddressProviderV3, AP_TREASURY, NO_VERSION_CONTROL} from "../interfaces/IAddressProviderV3.sol";

/// LIBS & TRAITS
import {ACLNonReentrantTrait} from "../traits/ACLNonReentrantTrait.sol";
Expand Down Expand Up @@ -155,7 +155,8 @@ contract Pool4626 is ERC4626, IPool4626, ACLNonReentrantTrait, ContractsRegister
addressProvider = _addressProvider; // F:[P4-01]
underlyingToken = _underlyingToken; // F:[P4-01]

treasury = IAddressProviderV3(_addressProvider).getAddressOrRevert(AP_TREASURY, 0); // F:[P4-01]
treasury =
IAddressProviderV3(_addressProvider).getAddressOrRevert({key: AP_TREASURY, _version: NO_VERSION_CONTROL}); // F:[P4-01]

timestampLU = uint64(block.timestamp); // F:[P4-01]
cumulativeIndexLU_RAY = uint128(RAY); // F:[P4-01]
Expand Down
7 changes: 6 additions & 1 deletion contracts/test/integration/pool/Pool4626.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import {LinearInterestRateModel} from "../../../pool/LinearInterestRateModel.sol

import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";

import "../../../core/AddressProviderV3.sol";
import {Pool4626} from "../../../pool/Pool4626.sol";
import {IPool4626Events} from "../../../interfaces/IPool4626.sol";
import {IERC4626Events} from "../../interfaces/IERC4626.sol";
Expand Down Expand Up @@ -173,7 +174,11 @@ contract Pool4626Test is TestHelper, BalanceHelper, IPool4626Events, IERC4626Eve

assertEq(pool.decimals(), IERC20Metadata(address(psts.underlying())).decimals(), "Incorrect decimals");

assertEq(pool.treasury(), psts.addressProvider().getTreasuryContract(), "Incorrect treasury");
assertEq(
pool.treasury(),
psts.addressProvider().getAddressOrRevert(AP_TREASURY, NO_VERSION_CONTROL),
"Incorrect treasury"
);

assertEq(pool.convertToAssets(RAY), RAY, "Incorrect diesel rate!");

Expand Down
10 changes: 4 additions & 6 deletions contracts/test/mocks/core/AccountFactoryMock.sol
Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,20 @@ import "forge-std/console.sol";
/// @title Disposable credit accounts factory
contract AccountFactoryMock is Test, IAccountFactory {
/// @dev Contract version
uint256 public version = 3_00;
uint256 public version;

address public usedAccount;
address public newCreditAccount;

address public returnedAccount;

constructor() {
constructor(uint256 _version) {
usedAccount = address(new CreditAccountMock());
newCreditAccount = makeAddr("NEW_CREDIT_ACCOUNT");

vm.label(usedAccount, "CREDIT_ACCOUNT");
}

function setVersion(uint256 _version) external {
version = _version;

vm.label(usedAccount, "CREDIT_ACCOUNT");
}

/// @dev Provides a new credit account to a Credit Manager
Expand Down
46 changes: 0 additions & 46 deletions contracts/test/mocks/core/AddressProviderACLMock.sol

This file was deleted.

72 changes: 72 additions & 0 deletions contracts/test/mocks/core/AddressProviderV3ACLMock.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
// SPDX-License-Identifier: UNLICENSED
// Gearbox Protocol. Generalized leverage for DeFi protocols
// (c) Gearbox Holdings, 2022
pragma solidity ^0.8.17;

import "../../../core/AddressProviderV3.sol";
import {AccountFactoryMock} from "../core/AccountFactoryMock.sol";
import {PriceOracleMock} from "../oracles/PriceOracleMock.sol";
import {WETHGatewayMock} from "../support/WETHGatewayMock.sol";
import {WithdrawalManagerMock} from "../support/WithdrawalManagerMock.sol";
import "../../lib/constants.sol";
import {Test} from "forge-std/Test.sol";

///
/// @title Address Provider that returns ACL and isConfigurator

contract AddressProviderV3ACLMock is Test, AddressProviderV3 {
address public owner;
mapping(address => bool) public isConfigurator;

mapping(address => bool) public isPool;
mapping(address => bool) public isCreditManager;

mapping(address => bool) public isPausableAdmin;
mapping(address => bool) public isUnpausableAdmin;

constructor() AddressProviderV3(address(this)) {
PriceOracleMock priceOracleMock = new PriceOracleMock();
_setAddress(AP_PRICE_ORACLE, address(priceOracleMock), priceOracleMock.version());

WETHGatewayMock wethGatewayMock = new WETHGatewayMock();
_setAddress(AP_WETH_GATEWAY, address(wethGatewayMock), wethGatewayMock.version());

WithdrawalManagerMock withdrawalManagerMock = new WithdrawalManagerMock();
_setAddress(AP_WITHDRAWAL_MANAGER, address(withdrawalManagerMock), withdrawalManagerMock.version());

AccountFactoryMock accountFactoryMockV1 = new AccountFactoryMock(1);
_setAddress(AP_ACCOUNT_FACTORY, address(accountFactoryMockV1), accountFactoryMockV1.version());

AccountFactoryMock accountFactoryMockV3 = new AccountFactoryMock(3_00);
_setAddress(AP_ACCOUNT_FACTORY, address(accountFactoryMockV3), accountFactoryMockV3.version());

_setAddress(AP_CONTRACTS_REGISTER, address(this), 1);

_setAddress(AP_TREASURY, makeAddr("TREASURY"), 0);

isConfigurator[msg.sender] = true;
owner = msg.sender;
}

function addPool(address pool) external {
isPool[pool] = true;
}

function addCreditManager(address creditManager) external {
isCreditManager[creditManager] = true;
}

/// @dev Adds an address to the set of admins that can pause contracts
/// @param newAdmin Address of a new pausable admin
function addPausableAdmin(address newAdmin) external {
isPausableAdmin[newAdmin] = true;
}

/// @dev Adds unpausable admin address to the list
/// @param newAdmin Address of new unpausable admin
function addUnpausableAdmin(address newAdmin) external {
isUnpausableAdmin[newAdmin] = true;
}

receive() external payable {}
}
19 changes: 19 additions & 0 deletions contracts/test/mocks/support/WithdrawalManagerMock.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// SPDX-License-Identifier: BUSL-1.1
// Gearbox Protocol. Generalized leverage for DeFi protocols
// (c) Gearbox Holdings, 2022
pragma solidity ^0.8.10;
pragma abicoder v1;

/// @title WithdrawalManagerMock
contract WithdrawalManagerMock {
// mapping(address => uint256) public balanceOf;

uint256 public constant version = 3_00;
// // CREDIT MANAGERS

// function depositFor(address to, uint256 amount) external {
// balanceOf[to] += amount;
// }

// function withdrawTo(address owner) external {}
}
4 changes: 2 additions & 2 deletions contracts/test/suites/CreditManagerTestSuite.sol
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ contract CreditManagerTestSuite is PoolDeployer {
tokenTestSuite = creditConfig.tokenTestSuite();

creditManager = internalSuite
? new CreditManagerTestInternal(address(poolMock), address(withdrawalManager))
: new CreditManagerV3(address(poolMock), address(withdrawalManager));
? new CreditManagerTestInternal(address(addressProvider), address(poolMock))
: new CreditManagerV3(address(addressProvider), address(poolMock));

creditFacade = msg.sender;

Expand Down
54 changes: 30 additions & 24 deletions contracts/test/suites/PoolServiceTestSuite.sol
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
// SPDX-License-Identifier: UNLICENSED
// Gearbox Protocol. Generalized leverage for DeFi protocols
// (c) Gearbox Holdings, 2022
pragma solidity ^0.8.10;
pragma solidity ^0.8.17;

import {AddressProvider} from "@gearbox-protocol/core-v2/contracts/core/AddressProvider.sol";
import "../../core/AddressProviderV3.sol";
import {AddressProviderV3ACLMock} from "../mocks/core/AddressProviderV3ACLMock.sol";
import {ContractsRegister} from "@gearbox-protocol/core-v2/contracts/core/ContractsRegister.sol";
import {ACL} from "@gearbox-protocol/core-v2/contracts/core/ACL.sol";
import {DieselToken} from "@gearbox-protocol/core-v2/contracts/tokens/DieselToken.sol";
Expand Down Expand Up @@ -40,7 +41,7 @@ contract PoolServiceTestSuite is Test {
ACL public acl;
WETHMock public weth;

AddressProvider public addressProvider;
IAddressProviderV3 public addressProvider;
ContractsRegister public cr;
TestPoolService public poolService;
Pool4626 public pool4626;
Expand All @@ -66,15 +67,20 @@ contract PoolServiceTestSuite is Test {

vm.startPrank(CONFIGURATOR);

acl = new ACL();
weth = WETHMock(payable(_tokenTestSuite.wethToken()));
addressProvider = new AddressProvider();
addressProvider.setACL(address(acl));
addressProvider.setTreasuryContract(DUMB_ADDRESS2);
cr = new ContractsRegister(address(addressProvider));
addressProvider.setContractsRegister(address(cr));
treasury = DUMB_ADDRESS2;
addressProvider.setWethToken(address(weth));
// acl = new ACL();
// weth = WETHMock(payable(_tokenTestSuite.wethToken()));
// addressProvider = new AddressProvider();
// addressProvider.setACL(address(acl));
// addressProvider.setTreasuryContract(DUMB_ADDRESS2);
// cr = new ContractsRegister(address(addressProvider));
// addressProvider.setContractsRegister(address(cr));
// treasury = DUMB_ADDRESS2;
// addressProvider.setWethToken(address(weth));

addressProvider = new AddressProviderV3ACLMock();
acl = ACL(addressProvider.getAddressOrRevert(AP_ACL, NO_VERSION_CONTROL));
cr = ContractsRegister(addressProvider.getAddressOrRevert(AP_CONTRACTS_REGISTER, 1));
treasury = addressProvider.getAddressOrRevert(AP_TREASURY, NO_VERSION_CONTROL);

underlying = IERC20(_underlying);

Expand All @@ -92,19 +98,19 @@ contract PoolServiceTestSuite is Test {
if (is4626) {
pool4626 = isFeeToken
? new Pool4626_USDT({
_addressProvider: address(addressProvider),
_underlyingToken: _underlying,
_interestRateModel: address(linearIRModel),
_expectedLiquidityLimit: type(uint256).max,
_supportsQuotas: supportQuotas
})
_addressProvider: address(addressProvider),
_underlyingToken: _underlying,
_interestRateModel: address(linearIRModel),
_expectedLiquidityLimit: type(uint256).max,
_supportsQuotas: supportQuotas
})
: new Pool4626({
_addressProvider: address(addressProvider),
_underlyingToken: _underlying,
_interestRateModel: address(linearIRModel),
_expectedLiquidityLimit: type(uint256).max,
_supportsQuotas: supportQuotas
});
_addressProvider: address(addressProvider),
_underlyingToken: _underlying,
_interestRateModel: address(linearIRModel),
_expectedLiquidityLimit: type(uint256).max,
_supportsQuotas: supportQuotas
});
newPool = address(pool4626);

if (supportQuotas) {
Expand Down
6 changes: 3 additions & 3 deletions contracts/test/unit/adapters/AbstractAdapter.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ pragma solidity ^0.8.17;
import {ZeroAddressException} from "../../../interfaces/IExceptions.sol";

import {TestHelper} from "../../lib/helper.sol";
import {AddressProviderACLMock} from "../../mocks/core/AddressProviderACLMock.sol";
import {AddressProviderV3ACLMock} from "../../mocks/core/AddressProviderV3ACLMock.sol";

import {AbstractAdapterHarness} from "./AbstractAdapterHarness.sol";
import {CreditManagerMock, CreditManagerMockEvents} from "./CreditManagerMock.sol";
Expand All @@ -15,7 +15,7 @@ import {CreditManagerMock, CreditManagerMockEvents} from "./CreditManagerMock.so
/// @notice U:[AA]: `AbstractAdapter` unit tests
contract AbstractAdapterUnitTest is TestHelper, CreditManagerMockEvents {
AbstractAdapterHarness abstractAdapter;
AddressProviderACLMock addressProvider;
AddressProviderV3ACLMock addressProvider;
CreditManagerMock creditManager;

address facade;
Expand All @@ -25,7 +25,7 @@ contract AbstractAdapterUnitTest is TestHelper, CreditManagerMockEvents {
facade = makeAddr("CREDIT_FACADE");
target = makeAddr("TARGET_CONTRACT");

addressProvider = new AddressProviderACLMock();
addressProvider = new AddressProviderV3ACLMock();
creditManager = new CreditManagerMock(address(addressProvider));
abstractAdapter = new AbstractAdapterHarness(address(creditManager), target);
}
Expand Down
Loading

0 comments on commit 993b200

Please sign in to comment.