Add pausable ism (#2675)

pull/2685/head
Yorke Rhodes 1 year ago committed by GitHub
parent 389029dafb
commit ff2a495389
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 34
      solidity/contracts/isms/PausableIsm.sol
  2. 32
      solidity/test/isms/PausableIsm.t.sol

@ -0,0 +1,34 @@
// SPDX-License-Identifier: MIT OR Apache-2.0
pragma solidity >=0.8.0;
// ============ External Imports ============
import {Pausable} from "@openzeppelin/contracts/security/Pausable.sol";
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
// ============ Internal Imports ============
import {IInterchainSecurityModule} from "../interfaces/IInterchainSecurityModule.sol";
contract PausableIsm is IInterchainSecurityModule, Ownable, Pausable {
uint8 public constant override moduleType = uint8(Types.NULL);
/**
* @inheritdoc IInterchainSecurityModule
* @dev Reverts when paused, otherwise returns `true`.
*/
function verify(bytes calldata, bytes calldata)
external
view
whenNotPaused
returns (bool)
{
return true;
}
function pause() external onlyOwner {
_pause();
}
function unpause() external onlyOwner {
_unpause();
}
}

@ -0,0 +1,32 @@
// SPDX-License-Identifier: MIT or Apache-2.0
pragma solidity ^0.8.13;
import {Test} from "forge-std/Test.sol";
import {PausableIsm} from "../../contracts/isms/PausableIsm.sol";
contract PausableIsmTest is Test {
PausableIsm ism;
function setUp() public {
ism = new PausableIsm();
}
function test_verify() public {
assertTrue(ism.verify("", ""));
ism.pause();
vm.expectRevert(bytes("Pausable: paused"));
ism.verify("", "");
}
function test_pause() public {
ism.pause();
assertTrue(ism.paused());
}
function test_unpause() public {
ism.pause();
ism.unpause();
assertFalse(ism.paused());
}
}
Loading…
Cancel
Save