Skip to content

Commit b0b7468

Browse files
author
Hakob23
committed
feat: enhance reward percentage validation in ConfigurationTest with boundary checks
1 parent dab952f commit b0b7468

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed

test/collateral/Configuration.t.sol

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ pragma solidity 0.8.25;
33

44
import {CollateralTestBase} from "./CollateralTestBase.sol";
55
import {CollateralManagementContract} from "../../src/CollateralManagement.sol";
6+
import {ICollateralManagement} from "../../src/interfaces/ICollateralManagement.sol";
67
import {IAccessControl} from "@openzeppelin/contracts/access/IAccessControl.sol";
8+
import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol";
79
import {Flyover} from "../../src/libraries/Flyover.sol";
810

911
contract ConfigurationTest is CollateralTestBase {
@@ -94,6 +96,63 @@ contract ConfigurationTest is CollateralTestBase {
9496
);
9597
}
9698

99+
function test_Initialize_RevertsWhenRewardPercentageExceedsMaximum()
100+
public
101+
{
102+
uint256 invalidRewardPercentage = collateralManagement
103+
.TOTAL_REWARD_PERCENTAGE() + 1;
104+
CollateralManagementContract implementation = new CollateralManagementContract();
105+
bytes memory initData = abi.encodeCall(
106+
CollateralManagementContract.initialize,
107+
(
108+
owner,
109+
TEST_DEFAULT_ADMIN_DELAY,
110+
TEST_MIN_COLLATERAL,
111+
TEST_RESIGN_DELAY_BLOCKS,
112+
invalidRewardPercentage
113+
)
114+
);
115+
116+
vm.expectRevert(
117+
abi.encodeWithSelector(
118+
ICollateralManagement.InvalidRewardPercentage.selector,
119+
collateralManagement.TOTAL_REWARD_PERCENTAGE(),
120+
invalidRewardPercentage
121+
)
122+
);
123+
new ERC1967Proxy(address(implementation), initData);
124+
}
125+
126+
function test_Initialize_AllowsMaximumBoundary() public {
127+
uint256 maxRewardPercentage = collateralManagement
128+
.TOTAL_REWARD_PERCENTAGE();
129+
CollateralManagementContract implementation = new CollateralManagementContract();
130+
bytes memory initData = abi.encodeCall(
131+
CollateralManagementContract.initialize,
132+
(
133+
owner,
134+
TEST_DEFAULT_ADMIN_DELAY,
135+
TEST_MIN_COLLATERAL,
136+
TEST_RESIGN_DELAY_BLOCKS,
137+
maxRewardPercentage
138+
)
139+
);
140+
141+
ERC1967Proxy proxy = new ERC1967Proxy(
142+
address(implementation),
143+
initData
144+
);
145+
CollateralManagementContract collateralManagementWithMaxReward = CollateralManagementContract(
146+
payable(address(proxy))
147+
);
148+
149+
assertEq(
150+
collateralManagementWithMaxReward.getRewardPercentage(),
151+
maxRewardPercentage,
152+
"Initialize should accept maximum basis points value"
153+
);
154+
}
155+
97156
// ============ setRewardPercentage function tests ============
98157

99158
function test_SetRewardPercentage_OnlyAllowsOwnerToModify() public {
@@ -130,6 +189,51 @@ contract ConfigurationTest is CollateralTestBase {
130189
);
131190
}
132191

192+
function test_SetRewardPercentage_RevertsWhenExceedingMaximum() public {
193+
uint256 initialRewardPercentage = collateralManagement
194+
.getRewardPercentage();
195+
uint256 invalidRewardPercentage = collateralManagement
196+
.TOTAL_REWARD_PERCENTAGE() + 1;
197+
198+
vm.startPrank(owner);
199+
vm.expectRevert(
200+
abi.encodeWithSelector(
201+
ICollateralManagement.InvalidRewardPercentage.selector,
202+
collateralManagement.TOTAL_REWARD_PERCENTAGE(),
203+
invalidRewardPercentage
204+
)
205+
);
206+
collateralManagement.setRewardPercentage(invalidRewardPercentage);
207+
vm.stopPrank();
208+
209+
assertEq(
210+
collateralManagement.getRewardPercentage(),
211+
initialRewardPercentage,
212+
"RewardPercentage should remain unchanged after revert"
213+
);
214+
}
215+
216+
function test_SetRewardPercentage_AllowsMaximumBoundary() public {
217+
uint256 oldRewardPercentage = collateralManagement
218+
.getRewardPercentage();
219+
uint256 maxRewardPercentage = collateralManagement
220+
.TOTAL_REWARD_PERCENTAGE();
221+
222+
vm.prank(owner);
223+
vm.expectEmit(true, true, false, false);
224+
emit CollateralManagementContract.RewardPercentageSet(
225+
oldRewardPercentage,
226+
maxRewardPercentage
227+
);
228+
collateralManagement.setRewardPercentage(maxRewardPercentage);
229+
230+
assertEq(
231+
collateralManagement.getRewardPercentage(),
232+
maxRewardPercentage,
233+
"RewardPercentage should accept maximum basis points value"
234+
);
235+
}
236+
133237
// ============ setResignDelayInBlocks function tests ============
134238

135239
function test_SetResignDelayInBlocks_OnlyAllowsOwnerToModify() public {

0 commit comments

Comments
 (0)