Skip to content

Commit

Permalink
Disable token transfers till treasury is set
Browse files Browse the repository at this point in the history
  • Loading branch information
lorien committed Nov 10, 2017
1 parent 42a62af commit e752a6a
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 3 deletions.
14 changes: 13 additions & 1 deletion contracts/TestToken.sol
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,23 @@ contract TestToken is StandardToken, Ownable {
treasury = Treasury(_treasury);
}

function transfer(address _to, uint256 _tokenAmount) public returns (bool) {
modifier treasuryIsSet() {
require(address(treasury) != 0x0);
_;
}

function transfer(address _to, uint256 _tokenAmount) public treasuryIsSet returns (bool) {
super.transfer(_to, _tokenAmount);
if (_to == address(treasury)) {
treasury.tokenDepositEvent(msg.sender, _tokenAmount);
}
}

function transferFrom(address _from, address _to, uint256 _value) public treasuryIsSet returns (bool) {
super.transferFrom(_from, _to, _value);
if (_to == address(treasury)) {
// TODO FIXME
//treasury.tokenDepositEvent(msg.sender, _tokenAmount);
}
}
}
30 changes: 28 additions & 2 deletions test/token.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ let TestToken = artifacts.require('TestToken');
let {deployTestContracts} = require('./util/deploy.js');

contract('TestToken [all features]', function(accounts) {
let {tokenContract} = {};
let {tokenContract, treasuryContract} = {};

beforeEach(async () => {
({tokenContract, treasuryContract} = await deployTestContracts(accounts));
Expand Down Expand Up @@ -45,6 +45,32 @@ contract('TestToken [all features]', function(accounts) {
);
});

});
it('transfer fails if treasury is not set', async () => {
await tokenContract.transfer(accounts[1], 100)
.should.be.rejectedWith('invalid opcode');
});

it('transferFrom fails if treasury is not set', async () => {
await tokenContract.approve(accounts[1], 100);
await tokenContract.transferFrom(accounts[0], accounts[2], 100, {from: accounts[1]})
.should.be.rejectedWith('invalid opcode');
});

it('transfer works if treasury is set', async () => {
await tokenContract.setTreasury(treasuryContract.address);
await tokenContract.transfer(accounts[1], 100);
100..should.be.bignumber.equal(
await tokenContract.balanceOf(accounts[1])
);
});

it('transferFrom works if treasury is set', async () => {
await tokenContract.setTreasury(treasuryContract.address);
await tokenContract.approve(accounts[1], 100);
await tokenContract.transferFrom(accounts[0], accounts[2], 100, {from: accounts[1]});
100..should.be.bignumber.equal(
await tokenContract.balanceOf(accounts[2])
);
});

});

0 comments on commit e752a6a

Please sign in to comment.