117 lines
3.2 KiB
Solidity
117 lines
3.2 KiB
Solidity
// test/Messages.sol
|
|
// SPDX-License-Identifier: Apache 2
|
|
|
|
pragma solidity ^0.8.0;
|
|
|
|
import "../contracts/Implementation.sol";
|
|
import "../contracts/Setup.sol";
|
|
import "../contracts/Wormhole.sol";
|
|
import "../contracts/interfaces/IWormhole.sol";
|
|
import "forge-test/rv-helpers/TestUtils.sol";
|
|
|
|
contract TestSetup is TestUtils {
|
|
|
|
Wormhole proxy;
|
|
Implementation impl;
|
|
Setup setup;
|
|
Setup proxiedSetup;
|
|
IWormhole proxied;
|
|
|
|
uint256 constant testGuardian = 93941733246223705020089879371323733820373732307041878556247502674739205313440;
|
|
bytes32 constant governanceContract = 0x0000000000000000000000000000000000000000000000000000000000000004;
|
|
|
|
function setUp() public {
|
|
// Deploy setup
|
|
setup = new Setup();
|
|
// Deploy implementation contract
|
|
impl = new Implementation();
|
|
// Deploy proxy
|
|
proxy = new Wormhole(address(setup), bytes(""));
|
|
|
|
address[] memory keys = new address[](1);
|
|
keys[0] = 0xbeFA429d57cD18b7F8A4d91A2da9AB4AF05d0FBe; // vm.addr(testGuardian)
|
|
|
|
//proxied setup
|
|
proxiedSetup = Setup(address(proxy));
|
|
|
|
vm.chainId(1);
|
|
proxiedSetup.setup({
|
|
implementation: address(impl),
|
|
initialGuardians: keys,
|
|
chainId: 2,
|
|
governanceChainId: 1,
|
|
governanceContract: governanceContract,
|
|
evmChainId: 1
|
|
});
|
|
|
|
proxied = IWormhole(address(proxy));
|
|
}
|
|
|
|
function testInitialize_after_setup_revert(bytes32 storageSlot, address alice)
|
|
public
|
|
unchangedStorage(address(proxied), storageSlot)
|
|
{
|
|
vm.prank(alice);
|
|
vm.expectRevert("already initialized");
|
|
proxied.initialize();
|
|
}
|
|
|
|
function testInitialize_after_setup_revert_KEVM(bytes32 storageSlot, address alice)
|
|
public
|
|
{
|
|
kevm.infiniteGas();
|
|
testInitialize_after_setup_revert(storageSlot, alice);
|
|
}
|
|
|
|
function testSetup_after_setup_revert(
|
|
bytes32 storageSlot,
|
|
address alice,
|
|
address implementation,
|
|
address initialGuardian,
|
|
uint16 chainId,
|
|
uint16 governanceChainId,
|
|
bytes32 govContract,
|
|
uint256 evmChainId)
|
|
public
|
|
unchangedStorage(address(proxied), storageSlot)
|
|
{
|
|
address[] memory keys = new address[](1);
|
|
keys[0] = initialGuardian;
|
|
|
|
vm.prank(alice);
|
|
vm.expectRevert("unsupported");
|
|
proxiedSetup.setup({
|
|
implementation: implementation,
|
|
initialGuardians: keys,
|
|
chainId: chainId,
|
|
governanceChainId: governanceChainId,
|
|
governanceContract: govContract,
|
|
evmChainId: evmChainId
|
|
});
|
|
}
|
|
|
|
function testSetup_after_setup_revert_KEVM(
|
|
bytes32 storageSlot,
|
|
address alice,
|
|
address implementation,
|
|
address initialGuardian,
|
|
uint16 chainId,
|
|
uint16 governanceChainId,
|
|
bytes32 govContract,
|
|
uint256 evmChainId)
|
|
public
|
|
{
|
|
kevm.infiniteGas();
|
|
testSetup_after_setup_revert(
|
|
storageSlot,
|
|
alice,
|
|
implementation,
|
|
initialGuardian,
|
|
chainId,
|
|
governanceChainId,
|
|
govContract,
|
|
evmChainId
|
|
);
|
|
}
|
|
}
|