Added Claimable contract as an extension of Ownable with the Claimable tests

pull/51/head
AugustoL 8 years ago
parent c70a0cfd5d
commit 0f3a8051d6
  1. 26
      contracts/Claimable.sol
  2. 1
      migrations/2_deploy_contracts.js
  3. 60
      test/Claimable.js

@ -0,0 +1,26 @@
pragma solidity ^0.4.0;
import './Ownable.sol';
/*
* Claimable
* Extension for the Ownable contract, where the ownership needs to be claimed
*/
contract Claimable is Ownable {
address public pendingOwner;
modifier onlyPendingOwner() {
if (msg.sender == pendingOwner)
_;
}
function transfer(address newOwner) onlyOwner {
pendingOwner = newOwner;
}
function claimOwnership() onlyPendingOwner {
owner = pendingOwner;
pendingOwner = 0x0;
}
}

@ -3,6 +3,7 @@ module.exports = function(deployer) {
deployer.deploy(BadArrayUse);
deployer.deploy(ProofOfExistence);
deployer.deploy(Ownable);
deployer.deploy(Claimable);
deployer.deploy(LimitFunds);
if(deployer.network == 'test'){
deployer.deploy(SecureTargetMock);

@ -0,0 +1,60 @@
contract('Claimable', function(accounts) {
it("should have an owner", function(done) {
var claimable = Claimable.deployed();
return claimable.owner()
.then(function(owner) {
assert.isTrue(owner != 0);
})
.then(done)
});
it("changes pendingOwner after transfer", function(done) {
var claimable = Claimable.deployed();
return claimable.transfer(accounts[1])
.then(function() {
return claimable.pendingOwner();
})
.then(function(pendingOwner) {
assert.isTrue(pendingOwner === accounts[1]);
})
.then(done)
});
it("should prevent to claimOwnership from no pendingOwner", function(done) {
var claimable = Claimable.deployed();
return claimable.claimOwnership({from: accounts[2]})
.then(function() {
return claimable.owner();
})
.then(function(owner) {
assert.isTrue(owner != accounts[2]);
})
.then(done)
});
it("changes allow pending owner to claim ownership", function(done) {
var claimable = Claimable.deployed();
return claimable.claimOwnership({from: accounts[1]})
.then(function() {
return claimable.owner();
})
.then(function(owner) {
assert.isTrue(owner === accounts[1]);
})
.then(done)
});
it("should prevent non-owners from transfering" ,function(done) {
var claimable = Claimable.deployed();
return claimable.transfer(accounts[2], {from: accounts[2]})
.then(function() {
return claimable.pendingOwner();
})
.then(function(pendingOwner) {
assert.isFalse(pendingOwner === accounts[2]);
})
.then(done)
});
});
Loading…
Cancel
Save