diff --git a/contracts/LimitBalance.sol b/contracts/LimitBalance.sol index f877512e0..d8c29baec 100644 --- a/contracts/LimitBalance.sol +++ b/contracts/LimitBalance.sol @@ -8,7 +8,7 @@ contract LimitBalance { } modifier limitedPayable() { - if (this.balance + msg.value > limit) { + if (this.balance > limit) { throw; } _; diff --git a/test/LimitBalance.js b/test/LimitBalance.js index 2afcd2da2..ce75821a0 100644 --- a/test/LimitBalance.js +++ b/test/LimitBalance.js @@ -35,4 +35,30 @@ contract('LimitBalance', function(accounts) { .then(done) }); + it("should allow multiple sends below limit", function(done) { + var amount = 500; + return lb.limitedDeposit({value: amount}) + .then(function() { + assert.equal(web3.eth.getBalance(lb.address), amount); + return lb.limitedDeposit({value: amount}) + }) + .then(function() { + assert.equal(web3.eth.getBalance(lb.address), amount*2); + }) + .then(done) + }); + + it("shouldnt allow multiple sends above limit", function(done) { + var amount = 500; + return lb.limitedDeposit({value: amount}) + .then(function() { + assert.equal(web3.eth.getBalance(lb.address), amount); + return lb.limitedDeposit({value: amount+1}) + }) + .catch(function(error) { + if (error.message.search('invalid JUMP') == -1) throw error; + }) + .then(done) + }); + });