Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
268b234
Set up L2GatewayRouterTest
gvladika Nov 7, 2023
2312b9e
Add tests
gvladika Nov 7, 2023
7127af9
Test L2GatewayRouter setters
gvladika Nov 8, 2023
e2c4b45
Test outbound transfers
gvladika Nov 8, 2023
4904799
Add first L2ERC20Gateway tests
gvladika Nov 8, 2023
f562aff
Test cloneableProxyHash
gvladika Nov 8, 2023
2e15a1c
Add more L2ERC20Gateway tests
gvladika Nov 9, 2023
d0bc654
Add outboundTransfer tests
gvladika Nov 13, 2023
2481dcf
Add finalizeInboundTransfer tests
gvladika Nov 13, 2023
afa13cf
Create abstract test holder for L2ArbitrumGateway functions
gvladika Nov 14, 2023
7d38af9
Add L2CustomGateway test skeleton
gvladika Nov 14, 2023
30609e3
Test calculateL2TokenAddress for custom gateway
gvladika Nov 14, 2023
0ed1010
Add more L2CustomGatewayTest tests
gvladika Nov 14, 2023
ed89893
Add finalizeInboundTransfer test for custom gateway
gvladika Nov 16, 2023
76515eb
Cover more finalizeInboundTransfer branches in custom gateway
gvladika Nov 16, 2023
917435b
Cover more finalizeInboundTransfer branches
gvladika Nov 17, 2023
eab97cf
Add L2WethGateway test file
gvladika Nov 17, 2023
d98eed4
Test L2WethGateway init
gvladika Nov 17, 2023
21d67d6
Add more L2Weth gateway tests
gvladika Nov 17, 2023
d07e2d2
Cover more L2WethGateway branches
gvladika Nov 20, 2023
a04d848
Merge branch 'main' into unit-tests
gvladika Feb 8, 2024
dded641
Merge branch 'gambit-gaps' into unit-tests
gvladika Feb 9, 2024
141cb66
Add config for L2 contracts
gvladika Feb 9, 2024
8ec5a25
Set gas limit to prevent infinite loops
gvladika Feb 9, 2024
3362b78
Add L2ReverseCustomGatewayTest tests
gvladika Feb 9, 2024
6da2210
Add test_calculateL2TokenAddress_Registered
gvladika Feb 9, 2024
03ea567
Add outboundTransfer tests
gvladika Feb 9, 2024
d6648cf
Merge branch 'main' into unit-tests
gzeoneth Mar 5, 2024
e1a2d11
Add new findinds to slither db
gvladika Mar 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
382 changes: 382 additions & 0 deletions slither.db.json

Large diffs are not rendered by default.

88 changes: 88 additions & 0 deletions test-foundry/L2ArbitrumGateway.t.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
// SPDX-License-Identifier: Apache-2.0

pragma solidity ^0.8.0;

import "forge-std/Test.sol";

import {L2ArbitrumGateway} from "contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol";
import {ArbSysMock} from "contracts/tokenbridge/test/ArbSysMock.sol";
import {ITokenGateway} from "contracts/tokenbridge/libraries/gateway/ITokenGateway.sol";

abstract contract L2ArbitrumGatewayTest is Test {
L2ArbitrumGateway public l2Gateway;
ArbSysMock public arbSysMock = new ArbSysMock();

address public router = makeAddr("router");
address public l1Counterpart = makeAddr("l1Counterpart");

// token transfer params
address public receiver = makeAddr("to");
address public sender = makeAddr("from");
uint256 public amount = 2400;

/* solhint-disable func-name-mixedcase */
function test_getOutboundCalldata() public {
address token = makeAddr("token");
bytes memory data = new bytes(340);

bytes memory expected = abi.encodeWithSelector(
ITokenGateway.finalizeInboundTransfer.selector,
token,
sender,
receiver,
amount,
abi.encode(0, data)
);
bytes memory actual = l2Gateway.getOutboundCalldata(token, sender, receiver, amount, data);

assertEq(actual, expected, "Invalid outbound calldata");
}

function test_finalizeInboundTransfer() public virtual;
function test_finalizeInboundTransfer_WithCallHook() public virtual;

function test_outboundTransfer() public virtual;

function test_outboundTransfer_4Args() public virtual;

function test_outboundTransfer_revert_ExtraDataDisabled() public {
vm.expectRevert("EXTRA_DATA_DISABLED");
bytes memory extraData = new bytes(0x1234);
l2Gateway.outboundTransfer(address(100), address(101), 200, 0, 0, extraData);
}

function test_outboundTransfer_revert_NoValue() public {
vm.expectRevert("NO_VALUE");
l2Gateway.outboundTransfer{value: 1 ether}(
address(100), address(101), 200, 0, 0, new bytes(0)
);
}

function test_outboundTransfer_revert_NotExpectedL1Token() public virtual;

function test_outboundTransfer_revert_TokenNotDeployed() public {
address token = makeAddr("someToken");
vm.expectRevert("TOKEN_NOT_DEPLOYED");
l2Gateway.outboundTransfer(token, address(101), 200, 0, 0, new bytes(0));
}

////
// Event declarations
////
event DepositFinalized(
address indexed l1Token, address indexed _from, address indexed _receiver, uint256 _amount
);

event WithdrawalInitiated(
address l1Token,
address indexed _from,
address indexed _receiver,
uint256 indexed _l2ToL1Id,
uint256 _exitNum,
uint256 _amount
);

event TxToL1(
address indexed _from, address indexed _receiver, uint256 indexed _id, bytes _data
);
}
Loading