diff --git a/contracts/ownership/Inheritable.sol b/contracts/ownership/Inheritable.sol index 88e65cf14..be28e000f 100644 --- a/contracts/ownership/Inheritable.sol +++ b/contracts/ownership/Inheritable.sol @@ -41,7 +41,7 @@ contract Inheritable is Ownable { * before the heir can take ownership. */ function Inheritable(uint _heartbeatTimeout) public { - heartbeatTimeout = _heartbeatTimeout; + setHeartbeatTimeout(_heartbeatTimeout); } function setHeir(address newHeir) public onlyOwner { @@ -58,11 +58,6 @@ contract Inheritable is Ownable { heir = 0; } - function setHeartbeatTimeout(uint newHeartbeatTimeout) public onlyOwner { - require(ownerLives()); - heartbeatTimeout = newHeartbeatTimeout; - } - /** * @dev Heir can pronounce the owners death. To inherit the ownership, they will * have to wait for `heartbeatTimeout` seconds. @@ -92,6 +87,11 @@ contract Inheritable is Ownable { timeOfDeath = 0; } + function setHeartbeatTimeout(uint newHeartbeatTimeout) internal onlyOwner { + require(ownerLives()); + heartbeatTimeout = newHeartbeatTimeout; + } + function ownerLives() internal constant returns (bool) { return timeOfDeath == 0; } diff --git a/test/Inheritable.js b/test/Inheritable.js index 174a40c38..44536ca9b 100644 --- a/test/Inheritable.js +++ b/test/Inheritable.js @@ -14,7 +14,7 @@ contract('Inheritable', function(accounts) { let owner beforeEach(async function() { - inheritable = await Inheritable.new() + inheritable = await Inheritable.new(4141) owner = await inheritable.owner() }) @@ -58,28 +58,9 @@ contract('Inheritable', function(accounts) { assert.isTrue(heir === NULL_ADDRESS) }) - it('owner can set heartbeatTimeout only if they are alive', async function() { - const newTimeout = 41414141 - await inheritable.setHeartbeatTimeout(newTimeout, {from: owner}) - - assert.isTrue((await inheritable.heartbeatTimeout()).equals(new web3.BigNumber(newTimeout))) - - const heir = accounts[1] - await inheritable.setHeir(heir, {from: owner}) - await inheritable.proclaimDeath({from: heir}) - - try { - await inheritable.setHeartbeatTimeout(newTimeout, {from: owner}) - assert.fail('should have thrown before') - } catch(error) { - assertJump(error) - } - }) - it('heir can inherit only if owner is dead and timeout was reached', async function() { const heir = accounts[1] await inheritable.setHeir(heir, {from: owner}) - await inheritable.setHeartbeatTimeout(4141, {from: owner}) try { await inheritable.inherit({from: heir}) @@ -99,13 +80,11 @@ contract('Inheritable', function(accounts) { await increaseTime(4141) await inheritable.inherit({from: heir}) - }) it('heir can\'t inherit if owner heartbeats', async function() { const heir = accounts[1] await inheritable.setHeir(heir, {from: owner}) - await inheritable.setHeartbeatTimeout(4141, {from: owner}) await inheritable.proclaimDeath({from: heir}) await inheritable.heartbeat({from: owner}) @@ -147,6 +126,7 @@ contract('Inheritable', function(accounts) { assert.isTrue(ownerDeadEvent.args.owner === owner) assert.isTrue(ownerDeadEvent.args.heir === heir) + await increaseTime(4141) const inheritLogs = (await inheritable.inherit({from: heir})).logs const ownershipTransferredEvent = inheritLogs.find(e => e.event === 'Inherited')