123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- const { expectThrow } = require('../helpers/expectThrow');
- const { EVMRevert } = require('../helpers/EVMRevert');
- const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
- require('chai')
- .should();
- function shouldBehaveLikeOwnable (accounts) {
- describe('as an ownable', function () {
- it('should have an owner', async function () {
- let owner = await this.ownable.owner();
- owner.should.not.eq(ZERO_ADDRESS);
- });
- it('changes owner after transfer', async function () {
- let other = accounts[1];
- await this.ownable.transferOwnership(other);
- let owner = await this.ownable.owner();
- owner.should.eq(other);
- });
- it('should prevent non-owners from transfering', async function () {
- const other = accounts[2];
- const owner = await this.ownable.owner.call();
- owner.should.not.eq(other);
- await expectThrow(this.ownable.transferOwnership(other, { from: other }), EVMRevert);
- });
- it('should guard ownership against stuck state', async function () {
- let originalOwner = await this.ownable.owner();
- await expectThrow(this.ownable.transferOwnership(null, { from: originalOwner }), EVMRevert);
- });
- it('loses owner after renouncement', async function () {
- await this.ownable.renounceOwnership();
- let owner = await this.ownable.owner();
- owner.should.eq(ZERO_ADDRESS);
- });
- it('should prevent non-owners from renouncement', async function () {
- const other = accounts[2];
- const owner = await this.ownable.owner.call();
- owner.should.not.eq(other);
- await expectThrow(this.ownable.renounceOwnership({ from: other }), EVMRevert);
- });
- });
- }
- module.exports = {
- shouldBehaveLikeOwnable,
- };
|