github.com/ethereum-optimism/optimism@v1.7.2/packages/contracts-bedrock/test/kontrol/proofs/L1ERC721Bridge.k.sol (about)

     1  // SPDX-License-Identifier: MIT
     2  pragma solidity ^0.8.13;
     3  
     4  import { DeploymentSummary } from "./utils/DeploymentSummary.sol";
     5  import { KontrolUtils } from "./utils/KontrolUtils.sol";
     6  import { Types } from "src/libraries/Types.sol";
     7  import {
     8      IL1ERC721Bridge as L1ERC721Bridge,
     9      IL1CrossDomainMessenger as CrossDomainMessenger,
    10      ISuperchainConfig as SuperchainConfig
    11  } from "./interfaces/KontrolInterfaces.sol";
    12  
    13  contract L1ERC721BridgeKontrol is DeploymentSummary, KontrolUtils {
    14      L1ERC721Bridge l1ERC721Bridge;
    15      SuperchainConfig superchainConfig;
    16  
    17      function setUpInlined() public {
    18          l1ERC721Bridge = L1ERC721Bridge(l1ERC721BridgeProxyAddress);
    19          superchainConfig = SuperchainConfig(superchainConfigProxyAddress);
    20      }
    21  
    22      function prove_finalizeBridgeERC721_paused(
    23          address _localToken,
    24          address _remoteToken,
    25          address _from,
    26          address _to,
    27          uint256 _amount,
    28          bytes calldata _extraData
    29      )
    30          public
    31      {
    32          setUpInlined();
    33  
    34          // Pause Standard Bridge
    35          vm.prank(superchainConfig.guardian());
    36          superchainConfig.pause("identifier");
    37  
    38          vm.mockCall(
    39              address(l1ERC721Bridge.messenger()),
    40              abi.encodeWithSelector(CrossDomainMessenger.xDomainMessageSender.selector),
    41              abi.encode(address(l1ERC721Bridge.otherBridge()))
    42          );
    43  
    44          vm.prank(address(l1ERC721Bridge.messenger()));
    45          vm.expectRevert("L1ERC721Bridge: paused");
    46          l1ERC721Bridge.finalizeBridgeERC721(_localToken, _remoteToken, _from, _to, _amount, _extraData);
    47      }
    48  }