@@ -102,8 +102,8 @@ contract MorphoBaseTest is ForkTestBase {
102102 uint256 (5_000_000e6 ) / 1 days
103103 );
104104
105- foreignController.setMaxExchangeRate (MORPHO_VAULT_USDS, 1e18 , IERC4626 (MORPHO_VAULT_USDS) .convertToAssets (1e18 ));
106- foreignController.setMaxExchangeRate (MORPHO_VAULT_USDC, 1e18 , IERC4626 (MORPHO_VAULT_USDC) .convertToAssets (1e18 ));
105+ foreignController.setMaxExchangeRate (MORPHO_VAULT_USDS, 1e18 , usdsVault .convertToAssets (1e18 ));
106+ foreignController.setMaxExchangeRate (MORPHO_VAULT_USDC, 1e18 , usdcVault .convertToAssets (1e18 ));
107107
108108 vm.stopPrank ();
109109 }
@@ -140,30 +140,11 @@ contract MorphoDepositFailureTests is MorphoBaseTest {
140140 foreignController.depositERC4626 (makeAddr ("fake-token " ), 1e18 );
141141 }
142142
143- function test_depositERC4626_exchangeRateBoundary () external {
144- deal (Base.USDS, address (almProxy), 25_000_000e18 );
145-
146- vm.startPrank (Base.SPARK_EXECUTOR);
147- foreignController.setMaxExchangeRate (MORPHO_VAULT_USDS, 1e18 , IERC4626 (MORPHO_VAULT_USDS).convertToAssets (1e18 ) - 1 );
148- vm.stopPrank ();
149-
150- vm.prank (relayer);
151- vm.expectRevert ("ForeignController/exchange-rate-too-high " );
152- foreignController.depositERC4626 (MORPHO_VAULT_USDS, 25_000_000e18 );
153-
154- vm.startPrank (Base.SPARK_EXECUTOR);
155- foreignController.setMaxExchangeRate (MORPHO_VAULT_USDS, 1e18 , IERC4626 (MORPHO_VAULT_USDS).convertToAssets (1e18 ));
156- vm.stopPrank ();
157-
158- vm.prank (relayer);
159- foreignController.depositERC4626 (MORPHO_VAULT_USDS, 25_000_000e18 );
160- }
161-
162143 function test_morpho_usds_deposit_rateLimitedBoundary () external {
163144 deal (Base.USDS, address (almProxy), 25_000_000e18 + 1 );
164145
165- vm.expectRevert ("RateLimits/rate-limit-exceeded " );
166146 vm.prank (relayer);
147+ vm.expectRevert ("RateLimits/rate-limit-exceeded " );
167148 foreignController.depositERC4626 (MORPHO_VAULT_USDS, 25_000_000e18 + 1 );
168149
169150 vm.prank (relayer);
@@ -173,14 +154,42 @@ contract MorphoDepositFailureTests is MorphoBaseTest {
173154 function test_morpho_usdc_deposit_rateLimitedBoundary () external {
174155 deal (Base.USDC, address (almProxy), 25_000_000e6 + 1 );
175156
176- vm.expectRevert ("RateLimits/rate-limit-exceeded " );
177157 vm.prank (relayer);
158+ vm.expectRevert ("RateLimits/rate-limit-exceeded " );
178159 foreignController.depositERC4626 (MORPHO_VAULT_USDC, 25_000_000e6 + 1 );
179160
180161 vm.prank (relayer);
181162 foreignController.depositERC4626 (MORPHO_VAULT_USDC, 25_000_000e6 );
182163 }
183164
165+ function test_morpho_deposit_maxExchangeRateNotSet () external {
166+ vm.prank (Base.SPARK_EXECUTOR);
167+ foreignController.setMaxExchangeRate (MORPHO_VAULT_USDS, 0 , 0 );
168+
169+ vm.prank (relayer);
170+ vm.expectRevert ("MainnetController/max-exchange-rate-not-set " );
171+ foreignController.depositERC4626 (MORPHO_VAULT_USDS, 1_000_000e18 );
172+ }
173+
174+ function test_depositERC4626_exchangeRateBoundary () external {
175+ deal (Base.USDS, address (almProxy), 25_000_000e18 );
176+
177+ vm.startPrank (Base.SPARK_EXECUTOR);
178+ foreignController.setMaxExchangeRate (MORPHO_VAULT_USDS, 1e18 , usdsVault.convertToAssets (1e18 ) - 1 );
179+ vm.stopPrank ();
180+
181+ vm.prank (relayer);
182+ vm.expectRevert ("ForeignController/exchange-rate-too-high " );
183+ foreignController.depositERC4626 (MORPHO_VAULT_USDS, 25_000_000e18 );
184+
185+ vm.startPrank (Base.SPARK_EXECUTOR);
186+ foreignController.setMaxExchangeRate (MORPHO_VAULT_USDS, 1e18 , usdsVault.convertToAssets (1e18 ));
187+ vm.stopPrank ();
188+
189+ vm.prank (relayer);
190+ foreignController.depositERC4626 (MORPHO_VAULT_USDS, 25_000_000e18 );
191+ }
192+
184193}
185194
186195contract MorphoDepositSuccessTests is MorphoBaseTest {
@@ -246,24 +255,32 @@ contract MorphoWithdrawFailureTests is MorphoBaseTest {
246255
247256 function test_morpho_usds_withdraw_rateLimitBoundary () external {
248257 deal (Base.USDS, address (almProxy), 10_000_000e18 + 1 );
258+
249259 vm.startPrank (relayer);
260+
250261 foreignController.depositERC4626 (MORPHO_VAULT_USDS, 10_000_000e18 + 1 );
251262
252263 vm.expectRevert ("RateLimits/rate-limit-exceeded " );
253264 foreignController.withdrawERC4626 (MORPHO_VAULT_USDS, 10_000_000e18 + 1 );
254265
255266 foreignController.withdrawERC4626 (MORPHO_VAULT_USDS, 10_000_000e18 );
267+
268+ vm.stopPrank ();
256269 }
257270
258271 function test_morpho_usdc_withdraw_rateLimitBoundary () external {
259272 deal (Base.USDC, address (almProxy), 10_000_000e18 + 1 );
273+
260274 vm.startPrank (relayer);
275+
261276 foreignController.depositERC4626 (MORPHO_VAULT_USDC, 10_000_000e6 + 1 );
262277
263278 vm.expectRevert ("RateLimits/rate-limit-exceeded " );
264279 foreignController.withdrawERC4626 (MORPHO_VAULT_USDC, 10_000_000e6 + 1 );
265280
266281 foreignController.withdrawERC4626 (MORPHO_VAULT_USDC, 10_000_000e6 );
282+
283+ vm.stopPrank ();
267284 }
268285
269286}
@@ -373,49 +390,57 @@ contract MorphoRedeemFailureTests is MorphoBaseTest {
373390 vm.stopPrank ();
374391
375392 deal (Base.USDS, address (almProxy), 1_000_000e18 );
393+
376394 vm.startPrank (relayer);
395+
377396 foreignController.depositERC4626 (MORPHO_VAULT_USDS, 1_000_000e18 );
378397
379398 vm.expectRevert ("RateLimits/zero-maxAmount " );
380399 foreignController.redeemERC4626 (MORPHO_VAULT_USDS, 1_000_000e18 );
400+
401+ vm.stopPrank ();
381402 }
382403
383404 function test_morpho_usds_redeem_rateLimitBoundary () external {
384405 deal (Base.USDS, address (almProxy), 20_000_000e18 );
406+
385407 vm.startPrank (relayer);
386- foreignController.depositERC4626 (MORPHO_VAULT_USDS, 20_000_000e18 );
387408
388- IERC4626 vault = IERC4626 (MORPHO_VAULT_USDS);
409+ foreignController. depositERC4626 (MORPHO_VAULT_USDS, 20_000_000e18 );
389410
390- uint256 overBoundaryShares = vault .convertToShares (10_000_000e18 + 1 );
391- uint256 atBoundaryShares = vault .convertToShares (10_000_000e18 );
411+ uint256 overBoundaryShares = usdsVault .convertToShares (10_000_000e18 + 1 );
412+ uint256 atBoundaryShares = usdsVault .convertToShares (10_000_000e18 );
392413
393- assertEq (vault .previewRedeem (overBoundaryShares), 10_000_000e18 + 1 );
394- assertEq (vault .previewRedeem (atBoundaryShares), 10_000_000e18 );
414+ assertEq (usdsVault .previewRedeem (overBoundaryShares), 10_000_000e18 + 1 );
415+ assertEq (usdsVault .previewRedeem (atBoundaryShares), 10_000_000e18 );
395416
396417 vm.expectRevert ("RateLimits/rate-limit-exceeded " );
397418 foreignController.redeemERC4626 (MORPHO_VAULT_USDS, overBoundaryShares);
398419
399420 foreignController.redeemERC4626 (MORPHO_VAULT_USDS, atBoundaryShares);
421+
422+ vm.stopPrank ();
400423 }
401424
402425 function test_morpho_usdc_redeem_rateLimitBoundary () external {
403426 deal (Base.USDC, address (almProxy), 20_000_000e18 );
427+
404428 vm.startPrank (relayer);
405- foreignController.depositERC4626 (MORPHO_VAULT_USDC, 20_000_000e6 );
406429
407- IERC4626 vault = IERC4626 (MORPHO_VAULT_USDC);
430+ foreignController. depositERC4626 (MORPHO_VAULT_USDC, 20_000_000e6 );
408431
409- uint256 overBoundaryShares = vault .convertToShares (10_000_000e6 + 1 );
410- uint256 atBoundaryShares = vault .convertToShares (10_000_000e6 );
432+ uint256 overBoundaryShares = usdcVault .convertToShares (10_000_000e6 + 1 );
433+ uint256 atBoundaryShares = usdcVault .convertToShares (10_000_000e6 );
411434
412- assertEq (vault .previewRedeem (overBoundaryShares), 10_000_000e6 + 1 );
413- assertEq (vault .previewRedeem (atBoundaryShares), 10_000_000e6 );
435+ assertEq (usdcVault .previewRedeem (overBoundaryShares), 10_000_000e6 + 1 );
436+ assertEq (usdcVault .previewRedeem (atBoundaryShares), 10_000_000e6 );
414437
415438 vm.expectRevert ("RateLimits/rate-limit-exceeded " );
416439 foreignController.redeemERC4626 (MORPHO_VAULT_USDC, overBoundaryShares);
417440
418441 foreignController.redeemERC4626 (MORPHO_VAULT_USDC, atBoundaryShares);
442+
443+ vm.stopPrank ();
419444 }
420445
421446}
0 commit comments