forked from bgd-labs/protocol-v3.6-upgrade
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathUpgradeTest.t.sol
More file actions
79 lines (59 loc) · 2.4 KB
/
UpgradeTest.t.sol
File metadata and controls
79 lines (59 loc) · 2.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "forge-std/Test.sol";
import {
ProtocolV3TestBase,
IPool,
IPoolDataProvider,
IPoolAddressesProvider,
IERC20
} from "../src/aave-helpers/ProtocolV3TestBase.sol";
import {UpgradePayload} from "../src/UpgradePayload.sol";
abstract contract UpgradeTest is ProtocolV3TestBase {
string public NETWORK;
uint256 public immutable BLOCK_NUMBER;
constructor(string memory network, uint256 blocknumber) {
NETWORK = network;
BLOCK_NUMBER = blocknumber;
}
function setUp() public {
vm.createSelectFork(vm.rpcUrl(NETWORK), BLOCK_NUMBER);
}
function test_execution() public virtual {
executePayload(vm, _getTestPayload());
}
function test_diff() external virtual {
UpgradePayload _payload = UpgradePayload(_getTestPayload());
IPoolAddressesProvider addressesProvider = IPoolAddressesProvider(address(_payload.POOL_ADDRESSES_PROVIDER()));
IPool pool = IPool(addressesProvider.getPool());
defaultTest(
string(abi.encodePacked(vm.toString(block.chainid), "_", vm.toString(address(pool)))), pool, address(_payload)
);
}
function test_upgrade() public virtual {
UpgradePayload _payload = UpgradePayload(_getTestPayload());
executePayload(vm, address(_payload));
IPoolAddressesProvider addressesProvider = IPoolAddressesProvider(address(_payload.POOL_ADDRESSES_PROVIDER()));
IPool pool = IPool(addressesProvider.getPool());
IPoolDataProvider poolDataProvider = IPoolDataProvider(addressesProvider.getPoolDataProvider());
assertEq(pool.FLASHLOAN_PREMIUM_TO_PROTOCOL(), 100_00);
address[] memory reserves = pool.getReservesList();
for (uint256 i = 0; i < reserves.length; i++) {
address reserve = reserves[i];
assertTrue(poolDataProvider.getIsVirtualAccActive(reserve));
address aToken = pool.getReserveAToken(reserve);
assertGe(IERC20(reserve).balanceOf(aToken), pool.getVirtualUnderlyingBalance(reserve));
}
}
function test_gas() external {
executePayload(vm, address(_getPayload()));
vm.snapshotGasLastCall("Execution", NETWORK);
}
function _getTestPayload() internal returns (address) {
address deployed = _getDeployedPayload();
if (deployed == address(0)) return _getPayload();
return deployed;
}
function _getPayload() internal virtual returns (address);
function _getDeployedPayload() internal virtual returns (address);
}