Skip to content

Commit 2f9805a

Browse files
committed
fixed the transferfrom bug
1 parent ed74d75 commit 2f9805a

File tree

2 files changed

+54
-1
lines changed

2 files changed

+54
-1
lines changed

contracts/InviteToken.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ contract StandardToken is ERC20 {
5757
require(balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value > balances[_to]);
5858
balances[_to] = balances[_to].add(_value);
5959
balances[_from] = balances[_from].sub(_value);
60-
allowed[_from][msg.sender] -= allowed[_from][msg.sender].sub(_value);
60+
allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
6161
Transfer(_from, _to, _value);
6262
return true;
6363
}

test/1_srttoken.js renamed to test/1_invitetoken.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,59 @@ contract('InviteToken', function(accounts) {
237237
});
238238
});
239239

240+
it("should transfer 1 token correctly using 3rd approved address", function() {
241+
var token;
242+
243+
var amount = 10;
244+
245+
var contract_owner = accounts[0];
246+
var token_owner = accounts[3];
247+
var spender = accounts[2];
248+
var transfer_to = accounts[4];
249+
250+
var allowance_before_transfer;
251+
var allowance_after_transfer;
252+
253+
var amount_transferred = 1;
254+
255+
var account_one_starting_balance;
256+
var account_two_starting_balance;
257+
var account_one_ending_balance;
258+
var account_two_ending_balance;
259+
260+
return InviteToken.deployed().then(function(instance) {
261+
token = instance;
262+
return token.transfer(token_owner, amount, {from: contract_owner});
263+
}).then(function() {
264+
return token.balanceOf.call(token_owner);
265+
}).then(function(balance) {
266+
account_one_starting_balance = balance.toNumber();
267+
return token.balanceOf.call(transfer_to);
268+
}).then(function(balance) {
269+
account_two_starting_balance = balance.toNumber();
270+
return token.approve(spender,amount,{from:token_owner});
271+
}).then(function() {
272+
return token.allowance.call(token_owner,spender);
273+
}).then(function(allowance) {
274+
allowance_before_transfer = allowance.toNumber();
275+
return token.transferFrom(token_owner,transfer_to,amount_transferred, {from: spender});
276+
}).then(function() {
277+
return token.allowance.call(token_owner,spender);
278+
}).then(function(allowance) {
279+
allowance_after_transfer = allowance.toNumber();
280+
assert.equal(allowance_after_transfer, allowance_before_transfer - amount_transferred, "Allowance not updated correctly");
281+
}).then(function() {
282+
return token.balanceOf.call(token_owner);
283+
}).then(function(balance) {
284+
account_one_ending_balance = balance.toNumber();
285+
return token.balanceOf.call(transfer_to);
286+
}).then(function(balance) {
287+
account_two_ending_balance = balance.toNumber();
288+
assert.equal(account_one_ending_balance, account_one_starting_balance - amount_transferred, "Amount wasn't correctly taken from the sender");
289+
assert.equal(account_two_ending_balance, account_two_starting_balance + amount_transferred, "Amount wasn't correctly sent to the receiver");
290+
});
291+
});
292+
240293
it("should increase approval 1 token correctly", function() {
241294
var token;
242295

0 commit comments

Comments
 (0)