transform Ownable to initializers

This commit is contained in:
Francisco Giordano
2018-09-21 17:37:59 -03:00
parent 9c16ffcaf4
commit f3606e3e21
3 changed files with 22 additions and 3 deletions

View File

@ -0,0 +1,11 @@
pragma solidity ^0.4.24;
import { Ownable } from '../ownership/Ownable.sol';
contract OwnableMock is Ownable {
constructor() {
initialize();
}
}

View File

@ -1,12 +1,13 @@
pragma solidity ^0.4.24;
import "../Initializable.sol";
/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
*/
contract Ownable {
contract Ownable is Initializable {
address private _owner;
@ -21,7 +22,7 @@ contract Ownable {
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
constructor() public {
function initialize() public initializer {
_owner = msg.sender;
}

View File

@ -1,11 +1,18 @@
const { EVMRevert } = require('../helpers/EVMRevert');
const { expectThrow } = require('../helpers/expectThrow');
const { shouldBehaveLikeOwnable } = require('./Ownable.behavior');
const Ownable = artifacts.require('Ownable');
const Ownable = artifacts.require('OwnableMock');
contract('Ownable', function ([_, owner, ...otherAccounts]) {
beforeEach(async function () {
this.ownable = await Ownable.new({ from: owner });
});
it('cannot be reinitialized', async function () {
await expectThrow(this.ownable.initialize(), EVMRevert);
});
shouldBehaveLikeOwnable(owner, otherAccounts);
});