Commit 721d8fbb by Makoto Inoue

Pass factory address at contract creation phase

parent a02a8a6e
...@@ -16,16 +16,21 @@ contract Target { ...@@ -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;
......
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) { ...@@ -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() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment