|
@@ -8,8 +8,6 @@ require('chai')
|
|
|
.should();
|
|
|
|
|
|
contract('Whitelist', function (accounts) {
|
|
|
- let mock;
|
|
|
-
|
|
|
const [
|
|
|
owner,
|
|
|
whitelistedAddress1,
|
|
@@ -20,73 +18,78 @@ contract('Whitelist', function (accounts) {
|
|
|
const whitelistedAddresses = [whitelistedAddress1, whitelistedAddress2];
|
|
|
|
|
|
before(async function () {
|
|
|
- mock = await WhitelistMock.new();
|
|
|
+ this.mock = await WhitelistMock.new();
|
|
|
+ this.role = await this.mock.ROLE_WHITELISTED();
|
|
|
});
|
|
|
|
|
|
- context('in normal conditions', () => {
|
|
|
+ context('in normal conditions', function () {
|
|
|
it('should add address to the whitelist', async function () {
|
|
|
await expectEvent.inTransaction(
|
|
|
- mock.addAddressToWhitelist(whitelistedAddress1, { from: owner }),
|
|
|
- 'WhitelistedAddressAdded'
|
|
|
+ this.mock.addAddressToWhitelist(whitelistedAddress1, { from: owner }),
|
|
|
+ 'RoleAdded',
|
|
|
+ { role: this.role },
|
|
|
);
|
|
|
- const isWhitelisted = await mock.whitelist(whitelistedAddress1);
|
|
|
+ const isWhitelisted = await this.mock.whitelist(whitelistedAddress1);
|
|
|
isWhitelisted.should.be.equal(true);
|
|
|
});
|
|
|
|
|
|
it('should add addresses to the whitelist', async function () {
|
|
|
await expectEvent.inTransaction(
|
|
|
- mock.addAddressesToWhitelist(whitelistedAddresses, { from: owner }),
|
|
|
- 'WhitelistedAddressAdded'
|
|
|
+ this.mock.addAddressesToWhitelist(whitelistedAddresses, { from: owner }),
|
|
|
+ 'RoleAdded',
|
|
|
+ { role: this.role },
|
|
|
);
|
|
|
for (let addr of whitelistedAddresses) {
|
|
|
- const isWhitelisted = await mock.whitelist(addr);
|
|
|
+ const isWhitelisted = await this.mock.whitelist(addr);
|
|
|
isWhitelisted.should.be.equal(true);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
it('should remove address from the whitelist', async function () {
|
|
|
await expectEvent.inTransaction(
|
|
|
- mock.removeAddressFromWhitelist(whitelistedAddress1, { from: owner }),
|
|
|
- 'WhitelistedAddressRemoved'
|
|
|
+ this.mock.removeAddressFromWhitelist(whitelistedAddress1, { from: owner }),
|
|
|
+ 'RoleRemoved',
|
|
|
+ { role: this.role },
|
|
|
);
|
|
|
- let isWhitelisted = await mock.whitelist(whitelistedAddress1);
|
|
|
+ let isWhitelisted = await this.mock.whitelist(whitelistedAddress1);
|
|
|
isWhitelisted.should.be.equal(false);
|
|
|
});
|
|
|
|
|
|
it('should remove addresses from the the whitelist', async function () {
|
|
|
await expectEvent.inTransaction(
|
|
|
- mock.removeAddressesFromWhitelist(whitelistedAddresses, { from: owner }),
|
|
|
- 'WhitelistedAddressRemoved'
|
|
|
+ this.mock.removeAddressesFromWhitelist(whitelistedAddresses, { from: owner }),
|
|
|
+ 'RoleRemoved',
|
|
|
+ { role: this.role },
|
|
|
);
|
|
|
for (let addr of whitelistedAddresses) {
|
|
|
- const isWhitelisted = await mock.whitelist(addr);
|
|
|
+ const isWhitelisted = await this.mock.whitelist(addr);
|
|
|
isWhitelisted.should.be.equal(false);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
- it('should allow whitelisted address to call #onlyWhitelistedCanDoThis', async () => {
|
|
|
- await mock.addAddressToWhitelist(whitelistedAddress1, { from: owner });
|
|
|
- await mock.onlyWhitelistedCanDoThis({ from: whitelistedAddress1 })
|
|
|
+ it('should allow whitelisted address to call #onlyWhitelistedCanDoThis', async function () {
|
|
|
+ await this.mock.addAddressToWhitelist(whitelistedAddress1, { from: owner });
|
|
|
+ await this.mock.onlyWhitelistedCanDoThis({ from: whitelistedAddress1 })
|
|
|
.should.be.fulfilled;
|
|
|
});
|
|
|
});
|
|
|
|
|
|
- context('in adversarial conditions', () => {
|
|
|
- it('should not allow "anyone" to add to the whitelist', async () => {
|
|
|
+ context('in adversarial conditions', function () {
|
|
|
+ it('should not allow "anyone" to add to the whitelist', async function () {
|
|
|
await expectThrow(
|
|
|
- mock.addAddressToWhitelist(whitelistedAddress1, { from: anyone })
|
|
|
+ this.mock.addAddressToWhitelist(whitelistedAddress1, { from: anyone })
|
|
|
);
|
|
|
});
|
|
|
|
|
|
- it('should not allow "anyone" to remove from the whitelist', async () => {
|
|
|
+ it('should not allow "anyone" to remove from the whitelist', async function () {
|
|
|
await expectThrow(
|
|
|
- mock.removeAddressFromWhitelist(whitelistedAddress1, { from: anyone })
|
|
|
+ this.mock.removeAddressFromWhitelist(whitelistedAddress1, { from: anyone })
|
|
|
);
|
|
|
});
|
|
|
|
|
|
- it('should not allow "anyone" to call #onlyWhitelistedCanDoThis', async () => {
|
|
|
+ it('should not allow "anyone" to call #onlyWhitelistedCanDoThis', async function () {
|
|
|
await expectThrow(
|
|
|
- mock.onlyWhitelistedCanDoThis({ from: anyone })
|
|
|
+ this.mock.onlyWhitelistedCanDoThis({ from: anyone })
|
|
|
);
|
|
|
});
|
|
|
});
|