Add pausable ism (#2675)
parent
389029dafb
commit
ff2a495389
@ -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…
Reference in new issue