|
@@ -25,17 +25,14 @@ function shouldBehaveLikeAccessControl (errorPrefix, admin, authorized, other, o
|
|
|
});
|
|
|
|
|
|
describe('granting', function () {
|
|
|
- it('admin can grant role to other accounts', async function () {
|
|
|
- const receipt = await this.accessControl.grantRole(ROLE, authorized, { from: admin });
|
|
|
- expectEvent(receipt, 'RoleGranted', { account: authorized, role: ROLE, sender: admin });
|
|
|
-
|
|
|
- expect(await this.accessControl.hasRole(ROLE, authorized)).to.equal(true);
|
|
|
+ beforeEach(async function () {
|
|
|
+ await this.accessControl.grantRole(ROLE, authorized, { from: admin });
|
|
|
});
|
|
|
|
|
|
it('non-admin cannot grant role to other accounts', async function () {
|
|
|
await expectRevert(
|
|
|
this.accessControl.grantRole(ROLE, authorized, { from: other }),
|
|
|
- `${errorPrefix}: sender must be an admin to grant`,
|
|
|
+ `${errorPrefix}: account ${other.toLowerCase()} is missing role ${DEFAULT_ADMIN_ROLE}`,
|
|
|
);
|
|
|
});
|
|
|
|
|
@@ -69,7 +66,7 @@ function shouldBehaveLikeAccessControl (errorPrefix, admin, authorized, other, o
|
|
|
it('non-admin cannot revoke role', async function () {
|
|
|
await expectRevert(
|
|
|
this.accessControl.revokeRole(ROLE, authorized, { from: other }),
|
|
|
- `${errorPrefix}: sender must be an admin to revoke`,
|
|
|
+ `${errorPrefix}: account ${other.toLowerCase()} is missing role ${DEFAULT_ADMIN_ROLE}`,
|
|
|
);
|
|
|
});
|
|
|
|
|
@@ -146,14 +143,38 @@ function shouldBehaveLikeAccessControl (errorPrefix, admin, authorized, other, o
|
|
|
it('a role\'s previous admins no longer grant roles', async function () {
|
|
|
await expectRevert(
|
|
|
this.accessControl.grantRole(ROLE, authorized, { from: admin }),
|
|
|
- 'AccessControl: sender must be an admin to grant',
|
|
|
+ `${errorPrefix}: account ${admin.toLowerCase()} is missing role ${OTHER_ROLE}`,
|
|
|
);
|
|
|
});
|
|
|
|
|
|
it('a role\'s previous admins no longer revoke roles', async function () {
|
|
|
await expectRevert(
|
|
|
this.accessControl.revokeRole(ROLE, authorized, { from: admin }),
|
|
|
- 'AccessControl: sender must be an admin to revoke',
|
|
|
+ `${errorPrefix}: account ${admin.toLowerCase()} is missing role ${OTHER_ROLE}`,
|
|
|
+ );
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ describe('onlyRole modifier', function () {
|
|
|
+ beforeEach(async function () {
|
|
|
+ await this.accessControl.grantRole(ROLE, authorized, { from: admin });
|
|
|
+ });
|
|
|
+
|
|
|
+ it('do not revert if sender has role', async function () {
|
|
|
+ await this.accessControl.senderProtected(ROLE, { from: authorized });
|
|
|
+ });
|
|
|
+
|
|
|
+ it('revert if sender doesn\'t have role #1', async function () {
|
|
|
+ await expectRevert(
|
|
|
+ this.accessControl.senderProtected(ROLE, { from: other }),
|
|
|
+ `${errorPrefix}: account ${other.toLowerCase()} is missing role ${ROLE}`,
|
|
|
+ );
|
|
|
+ });
|
|
|
+
|
|
|
+ it('revert if sender doesn\'t have role #2', async function () {
|
|
|
+ await expectRevert(
|
|
|
+ this.accessControl.senderProtected(OTHER_ROLE, { from: authorized }),
|
|
|
+ `${errorPrefix}: account ${authorized.toLowerCase()} is missing role ${OTHER_ROLE}`,
|
|
|
);
|
|
|
});
|
|
|
});
|