Skip to content

Commit 6a35ada

Browse files
authored
test: Add missing test coverage (SC-902) (#15)
1 parent 697c551 commit 6a35ada

File tree

11 files changed

+393
-75
lines changed

11 files changed

+393
-75
lines changed

src/ForeignController.sol

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,8 @@ contract ForeignController is AccessControl {
114114
/**********************************************************************************************/
115115

116116
function setMintRecipient(uint32 destinationDomain, bytes32 mintRecipient)
117-
external onlyRole(DEFAULT_ADMIN_ROLE)
117+
external
118+
onlyRole(DEFAULT_ADMIN_ROLE)
118119
{
119120
mintRecipients[destinationDomain] = mintRecipient;
120121
emit MintRecipientSet(destinationDomain, mintRecipient);
@@ -157,7 +158,9 @@ contract ForeignController is AccessControl {
157158

158159
// NOTE: !!! Rate limited at end of function !!!
159160
function withdrawPSM(address asset, uint256 maxAmount)
160-
external onlyRole(RELAYER) returns (uint256 assetsWithdrawn)
161+
external
162+
onlyRole(RELAYER)
163+
returns (uint256 assetsWithdrawn)
161164
{
162165
// Withdraw up to `maxAmount` of `asset` in the PSM, decode the result
163166
// to get `assetsWithdrawn` (assumes the proxy has enough PSM shares).
@@ -257,7 +260,9 @@ contract ForeignController is AccessControl {
257260

258261
// NOTE: !!! Rate limited at end of function !!!
259262
function redeemERC4626(address token, uint256 shares)
260-
external onlyRole(RELAYER) returns (uint256 assets)
263+
external
264+
onlyRole(RELAYER)
265+
returns (uint256 assets)
261266
{
262267
// Redeem shares for assets from the token, decode the resulting assets.
263268
// Assumes proxy has adequate token shares.
@@ -299,7 +304,9 @@ contract ForeignController is AccessControl {
299304

300305
// NOTE: !!! Rate limited at end of function !!!
301306
function withdrawAave(address aToken, uint256 amount)
302-
external onlyRole(RELAYER) returns (uint256 amountWithdrawn)
307+
external
308+
onlyRole(RELAYER)
309+
returns (uint256 amountWithdrawn)
303310
{
304311
IAavePool pool = IAavePool(IATokenWithPool(aToken).POOL());
305312

src/MainnetController.sol

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,8 @@ contract MainnetController is AccessControl {
217217
/**********************************************************************************************/
218218

219219
function setMintRecipient(uint32 destinationDomain, bytes32 mintRecipient)
220-
external onlyRole(DEFAULT_ADMIN_ROLE)
220+
external
221+
onlyRole(DEFAULT_ADMIN_ROLE)
221222
{
222223
mintRecipients[destinationDomain] = mintRecipient;
223224
emit MintRecipientSet(destinationDomain, mintRecipient);
@@ -237,7 +238,9 @@ contract MainnetController is AccessControl {
237238
/**********************************************************************************************/
238239

239240
function mintUSDS(uint256 usdsAmount)
240-
external onlyRole(RELAYER) rateLimited(LIMIT_USDS_MINT, usdsAmount)
241+
external
242+
onlyRole(RELAYER)
243+
rateLimited(LIMIT_USDS_MINT, usdsAmount)
241244
{
242245
// Mint USDS into the buffer
243246
proxy.doCall(
@@ -253,7 +256,9 @@ contract MainnetController is AccessControl {
253256
}
254257

255258
function burnUSDS(uint256 usdsAmount)
256-
external onlyRole(RELAYER) cancelRateLimit(LIMIT_USDS_MINT, usdsAmount)
259+
external
260+
onlyRole(RELAYER)
261+
cancelRateLimit(LIMIT_USDS_MINT, usdsAmount)
257262
{
258263
// Transfer USDS from the proxy to the buffer
259264
proxy.doCall(
@@ -331,7 +336,9 @@ contract MainnetController is AccessControl {
331336

332337
// NOTE: !!! Rate limited at end of function !!!
333338
function redeemERC4626(address token, uint256 shares)
334-
external onlyRole(RELAYER) returns (uint256 assets)
339+
external
340+
onlyRole(RELAYER)
341+
returns (uint256 assets)
335342
{
336343
// Redeem shares for assets from the token, decode the resulting assets.
337344
// Assumes proxy has adequate token shares.
@@ -388,7 +395,11 @@ contract MainnetController is AccessControl {
388395
function requestRedeemERC7540(address token, uint256 shares)
389396
external
390397
onlyRole(RELAYER)
391-
rateLimitedAsset(LIMIT_7540_REDEEM, token, IERC7540(token).convertToAssets(shares))
398+
rateLimitedAsset(
399+
LIMIT_7540_REDEEM,
400+
token,
401+
IERC7540(token).convertToAssets(shares)
402+
)
392403
{
393404
// Submit redeem request by transferring shares
394405
proxy.doCall(
@@ -435,7 +446,9 @@ contract MainnetController is AccessControl {
435446

436447
// NOTE: !!! Rate limited at end of function !!!
437448
function withdrawAave(address aToken, uint256 amount)
438-
external onlyRole(RELAYER) returns (uint256 amountWithdrawn)
449+
external
450+
onlyRole(RELAYER)
451+
returns (uint256 amountWithdrawn)
439452
{
440453
IAavePool pool = IAavePool(IATokenWithPool(aToken).POOL());
441454

@@ -495,19 +508,25 @@ contract MainnetController is AccessControl {
495508

496509
// Note that Ethena's mint/redeem per-block limits include other users
497510
function prepareUSDeMint(uint256 usdcAmount)
498-
external onlyRole(RELAYER) rateLimited(LIMIT_USDE_MINT, usdcAmount)
511+
external
512+
onlyRole(RELAYER)
513+
rateLimited(LIMIT_USDE_MINT, usdcAmount)
499514
{
500515
_approve(address(usdc), address(ethenaMinter), usdcAmount);
501516
}
502517

503518
function prepareUSDeBurn(uint256 usdeAmount)
504-
external onlyRole(RELAYER) rateLimited(LIMIT_USDE_BURN, usdeAmount)
519+
external
520+
onlyRole(RELAYER)
521+
rateLimited(LIMIT_USDE_BURN, usdeAmount)
505522
{
506523
_approve(address(usde), address(ethenaMinter), usdeAmount);
507524
}
508525

509526
function cooldownAssetsSUSDe(uint256 usdeAmount)
510-
external onlyRole(RELAYER) rateLimited(LIMIT_SUSDE_COOLDOWN, usdeAmount)
527+
external
528+
onlyRole(RELAYER)
529+
rateLimited(LIMIT_SUSDE_COOLDOWN, usdeAmount)
511530
{
512531
proxy.doCall(
513532
address(susde),
@@ -644,7 +663,9 @@ contract MainnetController is AccessControl {
644663
// NOTE: The param `usdcAmount` is denominated in 1e6 precision to match how PSM uses
645664
// USDC precision for both `buyGemNoFee` and `sellGemNoFee`
646665
function swapUSDSToUSDC(uint256 usdcAmount)
647-
external onlyRole(RELAYER) rateLimited(LIMIT_USDS_TO_USDC, usdcAmount)
666+
external
667+
onlyRole(RELAYER)
668+
rateLimited(LIMIT_USDS_TO_USDC, usdcAmount)
648669
{
649670
uint256 usdsAmount = usdcAmount * psmTo18ConversionFactor;
650671

@@ -668,7 +689,9 @@ contract MainnetController is AccessControl {
668689
}
669690

670691
function swapUSDCToUSDS(uint256 usdcAmount)
671-
external onlyRole(RELAYER) cancelRateLimit(LIMIT_USDS_TO_USDC, usdcAmount)
692+
external
693+
onlyRole(RELAYER)
694+
cancelRateLimit(LIMIT_USDS_TO_USDC, usdcAmount)
672695
{
673696
// Approve USDC to PSM from the proxy (assumes the proxy has enough USDC)
674697
_approve(address(usdc), address(psm), usdcAmount);

src/RateLimits.sol

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,10 @@ contract RateLimits is IRateLimits, AccessControl {
8484
/**********************************************************************************************/
8585

8686
function triggerRateLimitDecrease(bytes32 key, uint256 amountToDecrease)
87-
external override onlyRole(CONTROLLER) returns (uint256 newLimit)
87+
external
88+
override
89+
onlyRole(CONTROLLER)
90+
returns (uint256 newLimit)
8891
{
8992
RateLimitData storage d = _data[key];
9093
uint256 maxAmount = d.maxAmount;
@@ -103,7 +106,10 @@ contract RateLimits is IRateLimits, AccessControl {
103106
}
104107

105108
function triggerRateLimitIncrease(bytes32 key, uint256 amountToIncrease)
106-
external override onlyRole(CONTROLLER) returns (uint256 newLimit)
109+
external
110+
override
111+
onlyRole(CONTROLLER)
112+
returns (uint256 newLimit)
107113
{
108114
RateLimitData storage d = _data[key];
109115
uint256 maxAmount = d.maxAmount;

test/base-fork/ForkTestBase.t.sol

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -173,11 +173,11 @@ contract ForkTestBase is Test {
173173
);
174174

175175
// NOTE: Using minimal config for test base setup
176-
RateLimitHelpers.setRateLimitData(RateLimitHelpers.makeAssetKey(depositKey, address(usdcBase)), address(rateLimits), standardUsdcData, "usdcDepositData", 6);
177-
RateLimitHelpers.setRateLimitData(RateLimitHelpers.makeAssetKey(withdrawKey, address(usdcBase)), address(rateLimits), standardUsdcData, "usdcWithdrawData", 6);
178-
RateLimitHelpers.setRateLimitData(RateLimitHelpers.makeAssetKey(depositKey, address(usdsBase)), address(rateLimits), standardUsdsData, "usdsDepositData", 18);
179-
RateLimitHelpers.setRateLimitData(RateLimitHelpers.makeAssetKey(withdrawKey, address(usdsBase)), address(rateLimits), unlimitedData, "usdsWithdrawData", 18);
180-
RateLimitHelpers.setRateLimitData(RateLimitHelpers.makeAssetKey(depositKey, address(susdsBase)), address(rateLimits), standardUsdsData, "susdsDepositData", 18);
176+
RateLimitHelpers.setRateLimitData(RateLimitHelpers.makeAssetKey(depositKey, address(usdcBase)), address(rateLimits), standardUsdcData, "usdcDepositData", 6);
177+
RateLimitHelpers.setRateLimitData(RateLimitHelpers.makeAssetKey(withdrawKey, address(usdcBase)), address(rateLimits), standardUsdcData, "usdcWithdrawData", 6);
178+
RateLimitHelpers.setRateLimitData(RateLimitHelpers.makeAssetKey(depositKey, address(usdsBase)), address(rateLimits), standardUsdsData, "usdsDepositData", 18);
179+
RateLimitHelpers.setRateLimitData(RateLimitHelpers.makeAssetKey(withdrawKey, address(usdsBase)), address(rateLimits), unlimitedData, "usdsWithdrawData", 18);
180+
RateLimitHelpers.setRateLimitData(RateLimitHelpers.makeAssetKey(depositKey, address(susdsBase)), address(rateLimits), standardUsdsData, "susdsDepositData", 18);
181181
RateLimitHelpers.setRateLimitData(RateLimitHelpers.makeAssetKey(withdrawKey, address(susdsBase)), address(rateLimits), unlimitedData, "susdsWithdrawData", 18);
182182

183183
RateLimitHelpers.setRateLimitData(foreignController.LIMIT_USDC_TO_CCTP(), address(rateLimits), standardUsdcData, "usdcToCctpData", 6);

0 commit comments

Comments
 (0)