contract('Bounty', function(accounts) { it("can create bounty contract with factory address", function(done){ var target = SecureTargetMock.deployed(); SimpleTokenBounty.new(target.address). then(function(bounty){ return bounty.factoryAddress.call() }). then(function(address){ assert.equal(address, target.address) }). then(done); }) describe("SecureTargetMock", function(){ before(function(){ targetFactory = SecureTargetFactory.deployed(); }) it("checkInvariant returns true", function(done){ SimpleTokenBounty.new(targetFactory.address). then(function(_bounty) { bounty = _bounty; return bounty.createTarget(); }). then(function() { return bounty.checkInvariant.call() }). then(function(result) { assert.isTrue(result); }). then(done); }) }) describe("InsecureTargetMock", function(){ before(function(){ targetFactory = InsecureTargetFactory.deployed(); }) it("checkInvariant returns false", function(done){ SimpleTokenBounty.new(targetFactory.address). then(function(_bounty) { bounty = _bounty; return bounty.createTarget(); }). then(function() { return bounty.checkInvariant.call() }). then(function(result) { assert.isFalse(result); }). then(done); }) }) });