Skip to content

Commit 9074f4d

Browse files
committed
add more scenarios
1 parent c67ec39 commit 9074f4d

4 files changed

Lines changed: 75 additions & 0 deletions

File tree

src/protocol/IMessageRelayer.sol

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ interface IMessageRelayer {
1919
/// @dev Message forwarding failed
2020
error MessageForwardingFailed();
2121

22+
/// @dev Value sent is higher than tip amount
23+
error InsufficientValue();
24+
2225
/// @dev Tip transfer failed
2326
error TipTransferFailed();
2427

src/protocol/taiko_alethia/MessageRelayer.sol

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ contract MessageRelayer is ReentrancyGuardTransient, IMessageRelayer {
9090
tipRecipient = TIP_RECIPIENT_SLOT.asAddress().tload();
9191
}
9292

93+
require(msg.value >= tip, InsufficientValue());
9394
uint256 valueToSend = msg.value - tip;
9495
bool forwardMessageSuccess;
9596

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity ^0.8.28;
3+
4+
import {DepositRecipientIsMessageRelayer} from "./DepositRecipientScenarios.t.sol";
5+
import {GenericRecipient} from "./GenericRecipient.t.sol";
6+
7+
import {InitialState} from "./InitialState.t.sol";
8+
import {IETHBridge} from "src/protocol/IETHBridge.sol";
9+
10+
contract VaryingFundAmount is DepositRecipientIsMessageRelayer {
11+
function setUp() public override {
12+
super.setUp();
13+
}
14+
15+
function test_sentZeroAmount_relayMessage_shouldRevert() public zeroAmount {
16+
vm.expectRevert(IETHBridge.FailedClaim.selector);
17+
_relayMessage();
18+
}
19+
20+
function test_setTipHigherThanAmount_relayMessage_shouldRevert() public amountTooLow {
21+
vm.expectRevert(IETHBridge.FailedClaim.selector);
22+
_relayMessage();
23+
}
24+
25+
modifier zeroAmount() {
26+
ethDeposit.amount = 0;
27+
_encodeReceiveCall();
28+
_;
29+
}
30+
31+
modifier amountTooLow() {
32+
ethDeposit.amount = tip - 1 wei;
33+
_encodeReceiveCall();
34+
_;
35+
}
36+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity ^0.8.28;
3+
4+
import {DepositRecipientIsMessageRelayer} from "./DepositRecipientScenarios.t.sol";
5+
import {GenericRecipient} from "./GenericRecipient.t.sol";
6+
7+
import {InitialState} from "./InitialState.t.sol";
8+
import {IETHBridge} from "src/protocol/IETHBridge.sol";
9+
10+
contract UserSetGasLimit is DepositRecipientIsMessageRelayer {
11+
function setUp() public override {
12+
super.setUp();
13+
}
14+
15+
function test_userSetHighGasLimit_relayMessage_shouldRevert() public gasLimitHigherThanValue {
16+
vm.expectRevert(IETHBridge.FailedClaim.selector);
17+
_relayMessage();
18+
}
19+
20+
function test_userReasonableGasLimit_relayMessage() public whenGasLimitIsReasonable {
21+
_relayMessage();
22+
}
23+
24+
modifier gasLimitHigherThanValue() {
25+
gasLimit = amount + 1 wei;
26+
_encodeReceiveCall();
27+
_;
28+
}
29+
30+
modifier whenGasLimitIsReasonable() {
31+
gasLimit = 100_000;
32+
_encodeReceiveCall();
33+
_;
34+
}
35+
}

0 commit comments

Comments
 (0)