Skip to content

Commit 8c1d751

Browse files
committed
feat: cannot call setRepaid more than once
1 parent 35ca313 commit 8c1d751

2 files changed

Lines changed: 11 additions & 0 deletions

File tree

‎src/request/Request.sol‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,9 @@ contract Request is IRequest, OfferReceiver, VaultController, Initializable, Own
172172
/// @dev Only callable by the owner. Once called, `canWithdraw()` returns true and users
173173
/// can redeem their PT/YT tokens for the underlying asset. This action is irreversible.
174174
/// Emits a {Repaid} event.
175+
/// @custom:reverts If the request has already been repaid
175176
function setRepaid() external onlyOwner {
177+
if (_canWithdraw()) revert AlreadyRepaid();
176178
_requestStorage().repaid = true;
177179
emit Repaid();
178180
}

‎test/request/Request.t.sol‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,15 @@ contract RequestTest is Test {
364364
request.setRepaid();
365365
}
366366

367+
function test_setRepaid_cannotCallTwice() public {
368+
vm.prank(owner);
369+
request.setRepaid();
370+
371+
vm.prank(owner);
372+
vm.expectRevert(AlreadyRepaid.selector);
373+
request.setRepaid();
374+
}
375+
367376
/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
368377
/* INTEGRATION TESTS */
369378
/*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

0 commit comments

Comments
 (0)