Skip to content

Commit

Permalink
test initialize function in stm
Browse files Browse the repository at this point in the history
  • Loading branch information
tommysr committed Oct 1, 2024
1 parent 09bdc44 commit 2a02804
Show file tree
Hide file tree
Showing 5 changed files with 105 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import {StateTransitionManagerTest} from "./_StateTransitionManager_Shared.t.sol
import {console} from "forge-std/console.sol";
import {Unauthorized} from "contracts/common/L1ContractErrors.sol";


contract AdminManagement is StateTransitionManagerTest {
function setUp() public {
deploy();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

import {TransparentUpgradeableProxy} from "@openzeppelin/contracts-v4/proxy/transparent/TransparentUpgradeableProxy.sol";
import {StateTransitionManager} from "contracts/state-transition/StateTransitionManager.sol";
import {StateTransitionManagerInitializeData, ChainCreationParams} from "contracts/state-transition/IStateTransitionManager.sol";
import {GenesisUpgradeZero, GenesisBatchHashZero, GenesisIndexStorageZero, GenesisBatchCommitmentZero} from "contracts/common/L1ContractErrors.sol";
import {StateTransitionManagerTest} from "./_StateTransitionManager_Shared.t.sol";

contract StateTransitionManagerInitializeTest is StateTransitionManagerTest {
function setUp() public {
deploy();
}

modifier asBridgeHub() {
vm.stopPrank();
vm.startPrank(address(bridgehub));

_;
}

function _deployStmWithParams(ChainCreationParams memory params, bytes4 err) internal {
StateTransitionManagerInitializeData memory stmInitializeData = StateTransitionManagerInitializeData({
owner: governor,
validatorTimelock: validator,
chainCreationParams: params,
protocolVersion: 0
});

StateTransitionManager stm = new StateTransitionManager(address(bridgehub), MAX_NUMBER_OF_HYPERCHAINS);

vm.expectRevert(err);
TransparentUpgradeableProxy transparentUpgradeableProxy = new TransparentUpgradeableProxy(
address(stm),
admin,
abi.encodeCall(StateTransitionManager.initialize, stmInitializeData)
);

StateTransitionManager(address(transparentUpgradeableProxy));
}

function test_RevertWhen_genesisUpgradeIsZero() public asBridgeHub {
ChainCreationParams memory chainCreationParams = ChainCreationParams({
genesisUpgrade: address(0),
genesisBatchHash: bytes32(uint256(0x01)),
genesisIndexRepeatedStorageChanges: 0x01,
genesisBatchCommitment: bytes32(uint256(0x01)),
diamondCut: getDiamondCutData(address(diamondInit))
});

_deployStmWithParams(chainCreationParams, GenesisUpgradeZero.selector);
}

function test_RevertWhen_genesBatchHashIsZero() public asBridgeHub {
ChainCreationParams memory chainCreationParams = ChainCreationParams({
genesisUpgrade: address(genesisUpgradeContract),
genesisBatchHash: bytes32(uint256(0)),
genesisIndexRepeatedStorageChanges: 0x01,
genesisBatchCommitment: bytes32(uint256(0x01)),
diamondCut: getDiamondCutData(address(diamondInit))
});

_deployStmWithParams(chainCreationParams, GenesisBatchHashZero.selector);
}

function test_RevertWhen_genesisIndexRepeatedStorageChangesIsZero() public asBridgeHub {
ChainCreationParams memory chainCreationParams = ChainCreationParams({
genesisUpgrade: address(genesisUpgradeContract),
genesisBatchHash: bytes32(uint256(0x01)),
genesisIndexRepeatedStorageChanges: 0,
genesisBatchCommitment: bytes32(uint256(0x01)),
diamondCut: getDiamondCutData(address(diamondInit))
});

_deployStmWithParams(chainCreationParams, GenesisIndexStorageZero.selector);
}

function test_RevertWhen_genesisBatchCommitmentIsZero() public asBridgeHub {
ChainCreationParams memory chainCreationParams = ChainCreationParams({
genesisUpgrade: address(genesisUpgradeContract),
genesisBatchHash: bytes32(uint256(0x01)),
genesisIndexRepeatedStorageChanges: 0x01,
genesisBatchCommitment: bytes32(uint256(0)),
diamondCut: getDiamondCutData(address(diamondInit))
});

_deployStmWithParams(chainCreationParams, GenesisBatchCommitmentZero.selector);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ pragma solidity 0.8.24;
import {StateTransitionManagerTest} from "./_StateTransitionManager_Shared.t.sol";
import {Diamond} from "contracts/state-transition/libraries/Diamond.sol";
import {ProtocolIdNotGreater} from "contracts/common/L1ContractErrors.sol";

import {SemVer} from "contracts/common/libraries/SemVer.sol";

contract ProtocolVersion is StateTransitionManagerTest {
function setUp() public {
Expand All @@ -21,14 +21,26 @@ contract ProtocolVersion is StateTransitionManagerTest {
assertEq(oldProtocolVersion, 0);
assertEq(oldProtocolVersionDeadline, type(uint256).max);

chainContractAddress.setNewVersionUpgrade(getDiamondCutData(diamondInit), oldProtocolVersion, 1000, 1);
uint256 newProtocolVersionSemVer = SemVer.packSemVer(0, 1, 0);

chainContractAddress.setNewVersionUpgrade(
getDiamondCutData(diamondInit),
oldProtocolVersion,
1000,
newProtocolVersionSemVer
);

uint256 newProtocolVersion = chainContractAddress.protocolVersion();
uint256 newProtocolVersionDeadline = chainContractAddress.protocolVersionDeadline(newProtocolVersion);

oldProtocolVersionDeadline = chainContractAddress.protocolVersionDeadline(oldProtocolVersion);

assertEq(newProtocolVersion, 1);
(uint32 major, uint32 minor, uint32 patch) = chainContractAddress.getSemverProtocolVersion();

assertEq(major, 0);
assertEq(minor, 1);
assertEq(patch, 0);
assertEq(newProtocolVersion, newProtocolVersionSemVer);
assertEq(newProtocolVersionDeadline, type(uint256).max);
assertEq(oldProtocolVersionDeadline, 1000);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {FeeParams, PubdataPricingMode} from "contracts/state-transition/chain-de
contract StateTransitionManagerSetters is StateTransitionManagerTest {
function setUp() public {
deploy();
}
}

// setPriorityTxMaxGasLimit
function test_SuccessfulSetPriorityTxMaxGasLimit() public {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@ import {StateTransitionManager} from "contracts/state-transition/StateTransition
import {StateTransitionManagerInitializeData, ChainCreationParams} from "contracts/state-transition/IStateTransitionManager.sol";
import {TestnetVerifier} from "contracts/state-transition/TestnetVerifier.sol";
import {ZeroAddress} from "contracts/common/L1ContractErrors.sol";
import {console} from "forge-std/console.sol";


contract StateTransitionManagerTest is Test {
StateTransitionManager internal stateTransitionManager;
Expand Down Expand Up @@ -169,7 +167,4 @@ contract StateTransitionManagerTest is Test {

vm.startPrank(governor);
}

// add this to be excluded from coverage report
function test() internal virtual {}
}

0 comments on commit 2a02804

Please sign in to comment.