@@ -4,6 +4,9 @@ import {SafeERC20} from
44 "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol " ;
55import {IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol " ;
66import {Test, console} from "@forge-std/Test.sol " ;
7+ import {ERC1967Utils } from
8+ "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol " ;
9+ import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol " ;
710
811import {SIP03} from "src/exercises/03/SIP03.sol " ;
912import {SIP04} from "src/exercises/04/SIP04.sol " ;
@@ -24,23 +27,6 @@ contract TestVault04 is Test, SIP04 {
2427 address public usdc;
2528 address public usdt;
2629
27- function _loadUsers () private {
28- address [] memory users = new address [](3 );
29- users[0 ] = userA;
30- users[1 ] = userB;
31- users[2 ] = userC;
32-
33- for (uint256 i = 0 ; i < users.length ; i++ ) {
34- uint256 daiDepositAmount = 1_000e18 ;
35- uint256 usdtDepositAmount = 1_000e8 ;
36- uint256 usdcDepositAmount = 1_000e6 ;
37-
38- _vaultDeposit (dai, users[i], daiDepositAmount);
39- _vaultDeposit (usdc, users[i], usdcDepositAmount);
40- _vaultDeposit (usdt, users[i], usdtDepositAmount);
41- }
42- }
43-
4430 function setUp () public {
4531 /// set the environment variables
4632 vm.setEnv ("DO_RUN " , "false " );
@@ -65,9 +51,6 @@ contract TestVault04 is Test, SIP04 {
6551 vm.prank (vault.owner ());
6652 vault.setMaxSupply (100_000_000e18 );
6753
68- /// load data into newly deployed contract
69- _loadUsers ();
70-
7154 /// setup the proposal
7255 setupProposal ();
7356
@@ -82,101 +65,20 @@ contract TestVault04 is Test, SIP04 {
8265 simulate ();
8366 }
8467
85- function testSetup () public view {
86- assertTrue (
87- vault.authorizedToken (address (dai)), "Dai not whitelisted "
88- );
89- assertTrue (
90- vault.authorizedToken (address (usdc)),
91- "Usdc not whitelisted "
92- );
93- assertTrue (
94- vault.authorizedToken (address (usdt)),
95- "Usdt not whitelisted "
96- );
97- }
98-
99- function testVaultDepositDai () public {
100- uint256 daiDepositAmount = 1_000e18 ;
101-
102- _vaultDeposit (dai, address (this ), daiDepositAmount);
103- }
104-
105- function testVaultWithdrawalDai () public {
106- uint256 daiDepositAmount = 1_000e18 ;
107-
108- _vaultDeposit (dai, address (this ), daiDepositAmount);
109- uint256 startingVaultBalance = vault.balanceOf (address (this ));
110- uint256 startingTotalSupplied = vault.totalSupplied ();
111-
112- vault.withdraw (dai, daiDepositAmount);
113-
114- assertEq (
115- vault.balanceOf (address (this )),
116- startingVaultBalance - daiDepositAmount,
117- "vault dai balance not 0 "
118- );
68+ function testValidate () public view {
11969 assertEq (
120- vault.totalSupplied (),
121- startingTotalSupplied - daiDepositAmount,
122- "vault total supplied not 0 "
70+ vault.maxSupply (), 1_000_000e18 , "max supply not set "
12371 );
124- assertEq (
125- IERC20 (dai).balanceOf (address (this )),
126- daiDepositAmount,
127- "user's dai balance not increased "
128- );
129- }
130-
131- function testWithdrawAlreadyDepositedUSDC () public {
132- uint256 usdcDepositAmount = 1_000e6 ;
13372
134- _vaultDeposit (usdc, address (this ), usdcDepositAmount);
135-
136- vault.withdraw (usdc, usdcDepositAmount);
137- }
138-
139- function _vaultDeposit (
140- address token ,
141- address sender ,
142- uint256 amount
143- ) private {
144- uint256 startingTotalSupplied = vault.totalSupplied ();
145- uint256 startingTotalBalance =
146- IERC20 (token).balanceOf (address (vault));
147- uint256 startingUserBalance = vault.balanceOf (sender);
148-
149- deal (token, sender, amount);
150-
151- vm.startPrank (sender);
152- IERC20 (token).safeIncreaseAllowance (
153- addresses.getAddress ("VAULT_PROXY " ), amount
154- );
73+ bytes32 adminSlot =
74+ vm.load (address (vault), ERC1967Utils .ADMIN_SLOT);
75+ address proxyAdmin = address (uint160 (uint256 (adminSlot)));
15576
156- /// this executes 3 state transitions:
157- /// 1. deposit dai into the vault
158- /// 2. increase the user's balance in the vault
159- /// 3. increase the total supplied amount in the vault
160- vault.deposit (token, amount);
161- vm.stopPrank ();
162-
163- uint256 normalizedAmount =
164- vault.getNormalizedAmount (token, amount);
165-
166- assertEq (
167- vault.balanceOf (sender),
168- startingUserBalance + normalizedAmount,
169- "user vault balance not increased "
170- );
17177 assertEq (
172- vault.totalSupplied (),
173- startingTotalSupplied + normalizedAmount,
174- "vault total supplied not increased by deposited amount "
175- );
176- assertEq (
177- IERC20 (token).balanceOf (address (vault)),
178- startingTotalBalance + amount,
179- "token balance not increased "
78+ ProxyAdmin (proxyAdmin).owner (),
79+ addresses.getAddress ("COMPOUND_TIMELOCK_BRAVO " ),
80+ "owner not set "
18081 );
18182 }
83+
18284}
0 commit comments