Here is the fixed/working code, thanks to advice from https://github.com/OpenZeppelin/zeppelin-solidity/issues/584#issuecomment-376042522 it( 'Token transfer' , async () => { const fromAccount = accounts[ 1 ] const toAccount = accounts[ 4 ] const transferLimit = 4000000000000000000 const transferAmount = 3000000000000000000 let ecoSystemBalance = await tokenInstance.balanceOf(fromAccount) assert.isAtLeast(ecoSystemBalance, transferLimit, 'From account balance should be atleast 4' ) await tokenInstance.approve(toAccount, transferLimit, { from : fromAccount}) assert.equal( await tokenInstance.allowance(fromAccount, toAccount), transferLimit, 'Allowance from->to should be 4' ) console .log( `Attempting a transfer with ecoSystem balance of ${ecoSystemBalance} ` ) await tokenInstance.transferFrom(fromAccount, toAccount, transferAmount, { from : toAccount}) assert.equal( await tokenInstance.balanceOf(toAccount), transferAmount, 'To account should have 3' ) })