From edf837ed622d782e43b0d25dd46a27469b9b0381 Mon Sep 17 00:00:00 2001 From: Amir Bandeali Date: Fri, 9 Feb 2018 13:20:15 -0800 Subject: Add logDecoder, remove outdated tests --- packages/contracts/test/exchange/core.ts | 248 +++++++++++++++---------------- 1 file changed, 124 insertions(+), 124 deletions(-) (limited to 'packages/contracts/test') diff --git a/packages/contracts/test/exchange/core.ts b/packages/contracts/test/exchange/core.ts index a1758457b..ae136816e 100644 --- a/packages/contracts/test/exchange/core.ts +++ b/packages/contracts/test/exchange/core.ts @@ -19,6 +19,7 @@ import { Balances } from '../../src/utils/balances'; import { constants } from '../../src/utils/constants'; import { crypto } from '../../src/utils/crypto'; import { ExchangeWrapper } from '../../src/utils/exchange_wrapper'; +import { LogDecoder } from '../../src/utils/log_decoder'; import { OrderFactory } from '../../src/utils/order_factory'; import { BalancesByOwner, ContractName, ExchangeContractErrs } from '../../src/utils/types'; import { chaiSetup } from '../utils/chai_setup'; @@ -28,6 +29,7 @@ import { provider, web3Wrapper } from '../utils/web3_wrapper'; chaiSetup.configure(); const expect = chai.expect; const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper); +const logDecoder = new LogDecoder(constants.TESTRPC_NETWORK_ID); describe('Exchange', () => { let maker: string; @@ -392,7 +394,7 @@ describe('Exchange', () => { const res = await exWrapper.fillOrderAsync(signedOrder, taker, { takerTokenFillAmount: signedOrder.takerTokenAmount, }); - const log = res.logs[0] as LogWithDecodedArgs; + const log = logDecoder.tryToDecodeLogOrNoop(res.logs[0]) as LogWithDecodedArgs; expect(log.args.takerTokenFilledAmount).to.be.bignumber.equal( signedOrder.takerTokenAmount.minus(takerTokenFillAmount), ); @@ -428,7 +430,8 @@ describe('Exchange', () => { }); expect(res.logs).to.have.length(1); - const logArgs = (res.logs[0] as LogWithDecodedArgs).args; + const log = logDecoder.tryToDecodeLogOrNoop(res.logs[0]) as LogWithDecodedArgs; + const logArgs = log.args; const expectedFilledMakerTokenAmount = signedOrder.makerTokenAmount.div(divisor); const expectedFilledTakerTokenAmount = signedOrder.takerTokenAmount.div(divisor); const expectedFeeMPaid = signedOrder.makerFee.div(divisor); @@ -458,7 +461,8 @@ describe('Exchange', () => { }); expect(res.logs).to.have.length(1); - const logArgs = (res.logs[0] as LogWithDecodedArgs).args; + const log = logDecoder.tryToDecodeLogOrNoop(res.logs[0]) as LogWithDecodedArgs; + const logArgs = log.args; const expectedFilledMakerTokenAmount = signedOrder.makerTokenAmount.div(divisor); const expectedFilledTakerTokenAmount = signedOrder.takerTokenAmount.div(divisor); const expectedFeeMPaid = new BigNumber(0); @@ -524,19 +528,18 @@ describe('Exchange', () => { ).to.be.rejectedWith(constants.REVERT); }); - it('should not change balances if maker balances are too low to fill order and \ - shouldThrowOnInsufficientBalanceOrAllowance = false', async () => { - signedOrder = await orderFactory.newSignedOrderAsync({ - makerTokenAmount: ZeroEx.toBaseUnitAmount(new BigNumber(100000), 18), - }); + // it('should not change balances if maker balances are too low to fill order and \ + // shouldThrowOnInsufficientBalanceOrAllowance = false', async () => { + // signedOrder = await orderFactory.newSignedOrderAsync({ + // makerTokenAmount: ZeroEx.toBaseUnitAmount(new BigNumber(100000), 18), + // }); - await exWrapper.fillOrderAsync(signedOrder, taker); - const newBalances = await dmyBalances.getAsync(); - expect(newBalances).to.be.deep.equal(balances); - }); + // await exWrapper.fillOrderAsync(signedOrder, taker); + // const newBalances = await dmyBalances.getAsync(); + // expect(newBalances).to.be.deep.equal(balances); + // }); - it('should throw if maker balances are too low to fill order and \ - shouldThrowOnInsufficientBalanceOrAllowance = true', async () => { + it('should throw if maker balances are too low to fill order', async () => { signedOrder = await orderFactory.newSignedOrderAsync({ makerTokenAmount: ZeroEx.toBaseUnitAmount(new BigNumber(100000), 18), }); @@ -544,19 +547,18 @@ describe('Exchange', () => { return expect(exWrapper.fillOrderAsync(signedOrder, taker)).to.be.rejectedWith(constants.REVERT); }); - it('should not change balances if taker balances are too low to fill order and \ - shouldThrowOnInsufficientBalanceOrAllowance = false', async () => { - signedOrder = await orderFactory.newSignedOrderAsync({ - takerTokenAmount: ZeroEx.toBaseUnitAmount(new BigNumber(100000), 18), - }); + // it('should not change balances if taker balances are too low to fill order and \ + // shouldThrowOnInsufficientBalanceOrAllowance = false', async () => { + // signedOrder = await orderFactory.newSignedOrderAsync({ + // takerTokenAmount: ZeroEx.toBaseUnitAmount(new BigNumber(100000), 18), + // }); - await exWrapper.fillOrderAsync(signedOrder, taker); - const newBalances = await dmyBalances.getAsync(); - expect(newBalances).to.be.deep.equal(balances); - }); + // await exWrapper.fillOrderAsync(signedOrder, taker); + // const newBalances = await dmyBalances.getAsync(); + // expect(newBalances).to.be.deep.equal(balances); + // }); - it('should throw if taker balances are too low to fill order and \ - shouldThrowOnInsufficientBalanceOrAllowance = true', async () => { + it('should throw if taker balances are too low to fill order', async () => { signedOrder = await orderFactory.newSignedOrderAsync({ takerTokenAmount: ZeroEx.toBaseUnitAmount(new BigNumber(100000), 18), }); @@ -564,20 +566,19 @@ describe('Exchange', () => { return expect(exWrapper.fillOrderAsync(signedOrder, taker)).to.be.rejectedWith(constants.REVERT); }); - it('should not change balances if maker allowances are too low to fill order and \ - shouldThrowOnInsufficientBalanceOrAllowance = false', async () => { - await rep.approve.sendTransactionAsync(tokenTransferProxy.address, new BigNumber(0), { from: maker }); - await exWrapper.fillOrderAsync(signedOrder, taker); - await rep.approve.sendTransactionAsync(tokenTransferProxy.address, INITIAL_ALLOWANCE, { - from: maker, - }); + // it('should not change balances if maker allowances are too low to fill order and \ + // shouldThrowOnInsufficientBalanceOrAllowance = false', async () => { + // await rep.approve.sendTransactionAsync(tokenTransferProxy.address, new BigNumber(0), { from: maker }); + // await exWrapper.fillOrderAsync(signedOrder, taker); + // await rep.approve.sendTransactionAsync(tokenTransferProxy.address, INITIAL_ALLOWANCE, { + // from: maker, + // }); - const newBalances = await dmyBalances.getAsync(); - expect(newBalances).to.be.deep.equal(balances); - }); + // const newBalances = await dmyBalances.getAsync(); + // expect(newBalances).to.be.deep.equal(balances); + // }); - it('should throw if maker allowances are too low to fill order and \ - shouldThrowOnInsufficientBalanceOrAllowance = true', async () => { + it('should throw if maker allowances are too low to fill order', async () => { await rep.approve.sendTransactionAsync(tokenTransferProxy.address, new BigNumber(0), { from: maker }); expect(exWrapper.fillOrderAsync(signedOrder, taker)).to.be.rejectedWith(constants.REVERT); await rep.approve.sendTransactionAsync(tokenTransferProxy.address, INITIAL_ALLOWANCE, { @@ -585,20 +586,19 @@ describe('Exchange', () => { }); }); - it('should not change balances if taker allowances are too low to fill order and \ - shouldThrowOnInsufficientBalanceOrAllowance = false', async () => { - await dgd.approve.sendTransactionAsync(tokenTransferProxy.address, new BigNumber(0), { from: taker }); - await exWrapper.fillOrderAsync(signedOrder, taker); - await dgd.approve.sendTransactionAsync(tokenTransferProxy.address, INITIAL_ALLOWANCE, { - from: taker, - }); + // it('should not change balances if taker allowances are too low to fill order and \ + // shouldThrowOnInsufficientBalanceOrAllowance = false', async () => { + // await dgd.approve.sendTransactionAsync(tokenTransferProxy.address, new BigNumber(0), { from: taker }); + // await exWrapper.fillOrderAsync(signedOrder, taker); + // await dgd.approve.sendTransactionAsync(tokenTransferProxy.address, INITIAL_ALLOWANCE, { + // from: taker, + // }); - const newBalances = await dmyBalances.getAsync(); - expect(newBalances).to.be.deep.equal(balances); - }); + // const newBalances = await dmyBalances.getAsync(); + // expect(newBalances).to.be.deep.equal(balances); + // }); - it('should throw if taker allowances are too low to fill order and \ - shouldThrowOnInsufficientBalanceOrAllowance = true', async () => { + it('should throw if taker allowances are too low to fill order', async () => { await dgd.approve.sendTransactionAsync(tokenTransferProxy.address, new BigNumber(0), { from: taker }); expect(exWrapper.fillOrderAsync(signedOrder, taker)).to.be.rejectedWith(constants.REVERT); await dgd.approve.sendTransactionAsync(tokenTransferProxy.address, INITIAL_ALLOWANCE, { @@ -606,71 +606,71 @@ describe('Exchange', () => { }); }); - it('should not change balances if makerTokenAddress is ZRX, makerTokenAmount + makerFee > maker balance, \ - and shouldThrowOnInsufficientBalanceOrAllowance = false', async () => { - const makerZRXBalance = new BigNumber(balances[maker][zrx.address]); - signedOrder = await orderFactory.newSignedOrderAsync({ - makerTokenAddress: zrx.address, - makerTokenAmount: makerZRXBalance, - makerFee: new BigNumber(1), - }); - await exWrapper.fillOrderAsync(signedOrder, taker); - const newBalances = await dmyBalances.getAsync(); - expect(newBalances).to.be.deep.equal(balances); - }); - - it('should not change balances if makerTokenAddress is ZRX, makerTokenAmount + makerFee > maker allowance, \ - and shouldThrowOnInsufficientBalanceOrAllowance = false', async () => { - const makerZRXAllowance = await zrx.allowance.callAsync(maker, tokenTransferProxy.address); - signedOrder = await orderFactory.newSignedOrderAsync({ - makerTokenAddress: zrx.address, - makerTokenAmount: new BigNumber(makerZRXAllowance), - makerFee: new BigNumber(1), - }); - await exWrapper.fillOrderAsync(signedOrder, taker); - const newBalances = await dmyBalances.getAsync(); - expect(newBalances).to.be.deep.equal(balances); - }); - - it('should not change balances if takerTokenAddress is ZRX, takerTokenAmount + takerFee > taker balance, \ - and shouldThrowOnInsufficientBalanceOrAllowance = false', async () => { - const takerZRXBalance = new BigNumber(balances[taker][zrx.address]); - signedOrder = await orderFactory.newSignedOrderAsync({ - takerTokenAddress: zrx.address, - takerTokenAmount: takerZRXBalance, - takerFee: new BigNumber(1), - }); - await exWrapper.fillOrderAsync(signedOrder, taker); - const newBalances = await dmyBalances.getAsync(); - expect(newBalances).to.be.deep.equal(balances); - }); - - it('should not change balances if takerTokenAddress is ZRX, takerTokenAmount + takerFee > taker allowance, \ - and shouldThrowOnInsufficientBalanceOrAllowance = false', async () => { - const takerZRXAllowance = await zrx.allowance.callAsync(taker, tokenTransferProxy.address); - signedOrder = await orderFactory.newSignedOrderAsync({ - takerTokenAddress: zrx.address, - takerTokenAmount: new BigNumber(takerZRXAllowance), - takerFee: new BigNumber(1), - }); - await exWrapper.fillOrderAsync(signedOrder, taker); - const newBalances = await dmyBalances.getAsync(); - expect(newBalances).to.be.deep.equal(balances); - }); - - it('should throw if getBalance or getAllowance attempts to change state and \ - shouldThrowOnInsufficientBalanceOrAllowance = false', async () => { - const maliciousToken = await deployer.deployAsync(ContractName.MaliciousToken); - await maliciousToken.approve.sendTransactionAsync(tokenTransferProxy.address, INITIAL_ALLOWANCE, { - from: taker, - }); - - signedOrder = await orderFactory.newSignedOrderAsync({ - takerTokenAddress: maliciousToken.address, - }); - - return expect(exWrapper.fillOrderAsync(signedOrder, taker)).to.be.rejectedWith(constants.REVERT); - }); + // it('should not change balances if makerTokenAddress is ZRX, makerTokenAmount + makerFee > maker balance, \ + // and shouldThrowOnInsufficientBalanceOrAllowance = false', async () => { + // const makerZRXBalance = new BigNumber(balances[maker][zrx.address]); + // signedOrder = await orderFactory.newSignedOrderAsync({ + // makerTokenAddress: zrx.address, + // makerTokenAmount: makerZRXBalance, + // makerFee: new BigNumber(1), + // }); + // await exWrapper.fillOrderAsync(signedOrder, taker); + // const newBalances = await dmyBalances.getAsync(); + // expect(newBalances).to.be.deep.equal(balances); + // }); + + // it('should not change balances if makerTokenAddress is ZRX, makerTokenAmount + makerFee > maker allowance, \ + // and shouldThrowOnInsufficientBalanceOrAllowance = false', async () => { + // const makerZRXAllowance = await zrx.allowance(maker, tokenTransferProxy.address); + // signedOrder = await orderFactory.newSignedOrderAsync({ + // makerTokenAddress: zrx.address, + // makerTokenAmount: new BigNumber(makerZRXAllowance), + // makerFee: new BigNumber(1), + // }); + // await exWrapper.fillOrderAsync(signedOrder, taker); + // const newBalances = await dmyBalances.getAsync(); + // expect(newBalances).to.be.deep.equal(balances); + // }); + + // it('should not change balances if takerTokenAddress is ZRX, takerTokenAmount + takerFee > taker balance, \ + // and shouldThrowOnInsufficientBalanceOrAllowance = false', async () => { + // const takerZRXBalance = new BigNumber(balances[taker][zrx.address]); + // signedOrder = await orderFactory.newSignedOrderAsync({ + // takerTokenAddress: zrx.address, + // takerTokenAmount: takerZRXBalance, + // takerFee: new BigNumber(1), + // }); + // await exWrapper.fillOrderAsync(signedOrder, taker); + // const newBalances = await dmyBalances.getAsync(); + // expect(newBalances).to.be.deep.equal(balances); + // }); + + // it('should not change balances if takerTokenAddress is ZRX, takerTokenAmount + takerFee > taker allowance, \ + // and shouldThrowOnInsufficientBalanceOrAllowance = false', async () => { + // const takerZRXAllowance = await zrx.allowance(taker, tokenTransferProxy.address); + // signedOrder = await orderFactory.newSignedOrderAsync({ + // takerTokenAddress: zrx.address, + // takerTokenAmount: new BigNumber(takerZRXAllowance), + // takerFee: new BigNumber(1), + // }); + // await exWrapper.fillOrderAsync(signedOrder, taker); + // const newBalances = await dmyBalances.getAsync(); + // expect(newBalances).to.be.deep.equal(balances); + // }); + + // it('should throw if getBalance or getAllowance attempts to change state and \ + // shouldThrowOnInsufficientBalanceOrAllowance = false', async () => { + // const maliciousToken = await deployer.deployAsync(ContractName.MaliciousToken); + // await maliciousToken.approve.sendTransactionAsync(tokenTransferProxy.address, INITIAL_ALLOWANCE, { + // from: taker, + // }); + + // signedOrder = await orderFactory.newSignedOrderAsync({ + // takerTokenAddress: maliciousToken.address, + // }); + + // return expect(exWrapper.fillOrderAsync(signedOrder, taker)).to.be.rejectedWith(constants.REVERT); + // }); it('should not change balances if an order is expired', async () => { signedOrder = await orderFactory.newSignedOrderAsync({ @@ -689,8 +689,8 @@ describe('Exchange', () => { const res = await exWrapper.fillOrderAsync(signedOrder, taker); expect(res.logs).to.have.length(1); - const log = res.logs[0] as LogWithDecodedArgs; - const errCode = log.args.errorId; + const log = logDecoder.tryToDecodeLogOrNoop(res.logs[0]) as LogWithDecodedArgs; + const errCode = log.args.errorId.toNumber(); expect(errCode).to.be.equal(ExchangeContractErrs.ERROR_ORDER_EXPIRED); }); @@ -700,8 +700,8 @@ describe('Exchange', () => { const res = await exWrapper.fillOrderAsync(signedOrder, taker); expect(res.logs).to.have.length(1); - const log = res.logs[0] as LogWithDecodedArgs; - const errCode = log.args.errorId; + const log = logDecoder.tryToDecodeLogOrNoop(res.logs[0]) as LogWithDecodedArgs; + const errCode = log.args.errorId.toNumber(); expect(errCode).to.be.equal(ExchangeContractErrs.ERROR_ORDER_FULLY_FILLED_OR_CANCELLED); }); }); @@ -761,7 +761,7 @@ describe('Exchange', () => { const res = await exWrapper.fillOrderAsync(signedOrder, taker, { takerTokenFillAmount: signedOrder.takerTokenAmount, }); - const log = res.logs[0] as LogWithDecodedArgs; + const log = logDecoder.tryToDecodeLogOrNoop(res.logs[0]) as LogWithDecodedArgs; expect(log.args.takerTokenFilledAmount).to.be.bignumber.equal( signedOrder.takerTokenAmount.minus(takerTokenCancelAmount), ); @@ -806,7 +806,7 @@ describe('Exchange', () => { }); expect(res.logs).to.have.length(1); - const log = res.logs[0] as LogWithDecodedArgs; + const log = logDecoder.tryToDecodeLogOrNoop(res.logs[0]) as LogWithDecodedArgs; const logArgs = log.args; const expectedCancelledMakerTokenAmount = signedOrder.makerTokenAmount.div(divisor); const expectedCancelledTakerTokenAmount = signedOrder.takerTokenAmount.div(divisor); @@ -827,8 +827,8 @@ describe('Exchange', () => { const res = await exWrapper.cancelOrderAsync(signedOrder, maker); expect(res.logs).to.have.length(1); - const log = res.logs[0] as LogWithDecodedArgs; - const errCode = log.args.errorId; + const log = logDecoder.tryToDecodeLogOrNoop(res.logs[0]) as LogWithDecodedArgs; + const errCode = log.args.errorId.toNumber(); expect(errCode).to.be.equal(ExchangeContractErrs.ERROR_ORDER_FULLY_FILLED_OR_CANCELLED); }); @@ -839,8 +839,8 @@ describe('Exchange', () => { const res = await exWrapper.cancelOrderAsync(signedOrder, maker); expect(res.logs).to.have.length(1); - const log = res.logs[0] as LogWithDecodedArgs; - const errCode = log.args.errorId; + const log = logDecoder.tryToDecodeLogOrNoop(res.logs[0]) as LogWithDecodedArgs; + const errCode = log.args.errorId.toNumber(); expect(errCode).to.be.equal(ExchangeContractErrs.ERROR_ORDER_EXPIRED); }); }); -- cgit v1.2.3