Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
setHeartbeatTimeout: public --> internal
  • Loading branch information
azavalla committed Nov 30, 2017
commit fc4b95a892acd1149290ce0ccefca67883a68513
12 changes: 6 additions & 6 deletions contracts/ownership/Inheritable.sol
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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.
Expand Down Expand Up @@ -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;
}
Expand Down
24 changes: 2 additions & 22 deletions test/Inheritable.js
Original file line number Diff line number Diff line change
Expand Up @@ -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()
})

Expand Down Expand Up @@ -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})
Expand All @@ -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})
Expand Down Expand Up @@ -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')

Expand Down