From 21198bf1c1161fabfd0299ecac491f45b702a056 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Wed, 26 Sep 2018 11:36:41 -0300 Subject: [PATCH] Roles now emit events in construction and when renouncing. (#1329) * release candidate v2.0.0-rc.1 * fix linter error (cherry picked from commit c12a1c6898c5db300bfeceea50438b328601705d) * Roles now emit events in construction and when renouncing. --- contracts/access/roles/CapperRole.sol | 12 ++++++++---- contracts/access/roles/MinterRole.sol | 12 ++++++++---- contracts/access/roles/PauserRole.sol | 12 ++++++++---- contracts/access/roles/SignerRole.sol | 12 ++++++++---- ethpm.json | 2 +- package-lock.json | 2 +- package.json | 2 +- test/access/roles/PublicRole.behavior.js | 5 +++++ 8 files changed, 40 insertions(+), 19 deletions(-) diff --git a/contracts/access/roles/CapperRole.sol b/contracts/access/roles/CapperRole.sol index 756cdd48f..a79e8e694 100644 --- a/contracts/access/roles/CapperRole.sol +++ b/contracts/access/roles/CapperRole.sol @@ -11,7 +11,7 @@ contract CapperRole { Roles.Role private cappers; constructor() public { - cappers.add(msg.sender); + _addCapper(msg.sender); } modifier onlyCapper() { @@ -24,12 +24,16 @@ contract CapperRole { } function addCapper(address account) public onlyCapper { - cappers.add(account); - emit CapperAdded(account); + _addCapper(account); } function renounceCapper() public { - cappers.remove(msg.sender); + _removeCapper(msg.sender); + } + + function _addCapper(address account) internal { + cappers.add(account); + emit CapperAdded(account); } function _removeCapper(address account) internal { diff --git a/contracts/access/roles/MinterRole.sol b/contracts/access/roles/MinterRole.sol index cc95473c7..d908e3004 100644 --- a/contracts/access/roles/MinterRole.sol +++ b/contracts/access/roles/MinterRole.sol @@ -11,7 +11,7 @@ contract MinterRole { Roles.Role private minters; constructor() public { - minters.add(msg.sender); + _addMinter(msg.sender); } modifier onlyMinter() { @@ -24,12 +24,16 @@ contract MinterRole { } function addMinter(address account) public onlyMinter { - minters.add(account); - emit MinterAdded(account); + _addMinter(account); } function renounceMinter() public { - minters.remove(msg.sender); + _removeMinter(msg.sender); + } + + function _addMinter(address account) internal { + minters.add(account); + emit MinterAdded(account); } function _removeMinter(address account) internal { diff --git a/contracts/access/roles/PauserRole.sol b/contracts/access/roles/PauserRole.sol index 06347e7cf..d59839d6b 100644 --- a/contracts/access/roles/PauserRole.sol +++ b/contracts/access/roles/PauserRole.sol @@ -11,7 +11,7 @@ contract PauserRole { Roles.Role private pausers; constructor() public { - pausers.add(msg.sender); + _addPauser(msg.sender); } modifier onlyPauser() { @@ -24,12 +24,16 @@ contract PauserRole { } function addPauser(address account) public onlyPauser { - pausers.add(account); - emit PauserAdded(account); + _addPauser(account); } function renouncePauser() public { - pausers.remove(msg.sender); + _removePauser(msg.sender); + } + + function _addPauser(address account) internal { + pausers.add(account); + emit PauserAdded(account); } function _removePauser(address account) internal { diff --git a/contracts/access/roles/SignerRole.sol b/contracts/access/roles/SignerRole.sol index e2729a255..bbf8fd36f 100644 --- a/contracts/access/roles/SignerRole.sol +++ b/contracts/access/roles/SignerRole.sol @@ -11,7 +11,7 @@ contract SignerRole { Roles.Role private signers; constructor() public { - signers.add(msg.sender); + _addSigner(msg.sender); } modifier onlySigner() { @@ -24,12 +24,16 @@ contract SignerRole { } function addSigner(address account) public onlySigner { - signers.add(account); - emit SignerAdded(account); + _addSigner(account); } function renounceSigner() public { - signers.remove(msg.sender); + _removeSigner(msg.sender); + } + + function _addSigner(address account) internal { + signers.add(account); + emit SignerAdded(account); } function _removeSigner(address account) internal { diff --git a/ethpm.json b/ethpm.json index 27a294726..bb2674762 100644 --- a/ethpm.json +++ b/ethpm.json @@ -1,6 +1,6 @@ { "package_name": "zeppelin", - "version": "1.12.0", + "version": "2.0.0-rc.1", "description": "Secure Smart Contract library for Solidity", "authors": [ "OpenZeppelin Community " diff --git a/package-lock.json b/package-lock.json index 3fa9ab04e..29034359c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "openzeppelin-solidity", - "version": "1.12.0", + "version": "2.0.0-rc.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index d3eedb5c2..235e500ee 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "openzeppelin-solidity", - "version": "1.12.0", + "version": "2.0.0-rc.1", "description": "Secure Smart Contract library for Solidity", "files": [ "build", diff --git a/test/access/roles/PublicRole.behavior.js b/test/access/roles/PublicRole.behavior.js index 1e489a468..f1c723b78 100644 --- a/test/access/roles/PublicRole.behavior.js +++ b/test/access/roles/PublicRole.behavior.js @@ -89,6 +89,11 @@ function shouldBehaveLikePublicRole (authorized, otherAuthorized, [anyone], role (await this.contract[`is${rolename}`](authorized)).should.equal(false); }); + it(`emits a ${rolename}Removed event`, async function () { + const { logs } = await this.contract[`renounce${rolename}`]({ from: authorized }); + expectEvent.inLogs(logs, `${rolename}Removed`, { account: authorized }); + }); + it('doesn\'t revert when renouncing unassigned role', async function () { await this.contract[`renounce${rolename}`]({ from: anyone }); });