72 lines
2.3 KiB
Solidity
72 lines
2.3 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity ^0.8.20;
|
|
|
|
import "forge-std/Test.sol";
|
|
import "../../contracts/bridge/UniversalCCIPBridge.sol";
|
|
import "../../contracts/registry/UniversalAssetRegistry.sol";
|
|
import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol";
|
|
|
|
/**
|
|
* @title Bridge Amounts Fuzzing Tests
|
|
* @notice Fuzz tests for edge cases in bridge amounts
|
|
*/
|
|
contract BridgeAmountsFuzzTest is Test {
|
|
UniversalCCIPBridge public bridge;
|
|
UniversalAssetRegistry public registry;
|
|
|
|
address public admin;
|
|
|
|
function setUp() public {
|
|
admin = makeAddr("admin");
|
|
|
|
vm.startPrank(admin);
|
|
|
|
UniversalAssetRegistry regImpl = new UniversalAssetRegistry();
|
|
bytes memory regInitData = abi.encodeWithSelector(UniversalAssetRegistry.initialize.selector, admin);
|
|
ERC1967Proxy regProxy = new ERC1967Proxy(address(regImpl), regInitData);
|
|
registry = UniversalAssetRegistry(address(regProxy));
|
|
|
|
UniversalCCIPBridge bridgeImpl = new UniversalCCIPBridge();
|
|
bytes memory bridgeInitData = abi.encodeWithSelector(
|
|
UniversalCCIPBridge.initialize.selector,
|
|
address(registry),
|
|
makeAddr("router"),
|
|
admin
|
|
);
|
|
ERC1967Proxy bridgeProxy = new ERC1967Proxy(address(bridgeImpl), bridgeInitData);
|
|
bridge = UniversalCCIPBridge(payable(address(bridgeProxy)));
|
|
|
|
vm.stopPrank();
|
|
}
|
|
|
|
function testFuzzBridgeAmounts(uint256 amount) public {
|
|
// Bound amount to reasonable range
|
|
amount = bound(amount, 1, type(uint128).max);
|
|
|
|
// Test that bridge handles various amounts correctly
|
|
// This would require proper setup with mock tokens
|
|
}
|
|
|
|
function testFuzzMinMaxLimits(
|
|
uint256 minAmount,
|
|
uint256 maxAmount,
|
|
uint256 bridgeAmount
|
|
) public {
|
|
vm.assume(minAmount > 0);
|
|
vm.assume(maxAmount > minAmount);
|
|
vm.assume(bridgeAmount >= minAmount && bridgeAmount <= maxAmount);
|
|
|
|
// Test that limits are enforced correctly
|
|
}
|
|
|
|
function testFuzzGasPrice(uint256 gasPrice) public {
|
|
gasPrice = bound(gasPrice, 1, 1000 gwei);
|
|
|
|
// Test gas price handling
|
|
}
|
|
|
|
function testFuzzDestinationChain(uint64 chainSelector) public {
|
|
// Test various chain selectors
|
|
}
|
|
}
|