Pass factory address at contract creation phase

pull/35/head
Makoto Inoue 8 years ago
parent a02a8a6e41
commit 721d8fbbf7
  1. 9
      contracts/bounties/SimpleTokenBounty.sol
  2. 28
      test/Bounty.js

@ -16,16 +16,21 @@ contract Target {
function checkInvariant() returns(bool); function checkInvariant() returns(bool);
} }
contract Bounty is PullPayment { contract SimpleTokenBounty is PullPayment {
Target target; Target target;
bool public claimed; bool public claimed;
address public factoryAddress;
mapping(address => address) public researchers; mapping(address => address) public researchers;
function() { function() {
if (claimed) throw; if (claimed) throw;
} }
function createTarget(address factoryAddress) returns(Target) { function SimpleTokenBounty(address _factoryAddress){
factoryAddress = _factoryAddress;
}
function createTarget() returns(Target) {
target = Target(Factory(factoryAddress).deployContract()); target = Target(Factory(factoryAddress).deployContract());
researchers[target] = msg.sender; researchers[target] = msg.sender;
return target; return target;

@ -1,11 +1,27 @@
contract('Bounty', function(accounts) { contract('Bounty', function(accounts) {
it("can call checkInvariant for InsecureTargetMock", function(done){ it("can create bounty contract with factory address", function(done){
var bounty = Bounty.deployed();
var target = SecureTargetMock.deployed(); var target = SecureTargetMock.deployed();
bounty.createTarget(target.address). SimpleTokenBounty.new(target.address).
then(function() { then(function(bounty){
return bounty.checkInvariant.call() return bounty.factoryAddress.call()
}).
then(function(address){
assert.equal(address, target.address)
}).
then(done);
})
it.only("can call checkInvariant for SecureTargetMock", function(done){
var bounty;
var target = SecureTargetMock.deployed();
SimpleTokenBounty.new(target.address).
then(function(_bounty) {
bounty = _bounty;
return bounty.createTarget.sendTransaction({gas:200000});
}). }).
// then(function() {
// return bounty.checkInvariant.call()
// }).
then(function(result) { then(function(result) {
assert.isTrue(result); assert.isTrue(result);
}). }).
@ -13,7 +29,7 @@ contract('Bounty', function(accounts) {
}) })
it("can call checkInvariant for InsecureTargetMock", function(done){ it("can call checkInvariant for InsecureTargetMock", function(done){
var bounty = Bounty.deployed(); var bounty = SimpleTokenBounty.deployed();
var target = InsecureTargetMock.deployed(); var target = InsecureTargetMock.deployed();
bounty.createTarget(target.address). bounty.createTarget(target.address).
then(function() { then(function() {

Loading…
Cancel
Save