aboutsummaryrefslogtreecommitdiffstats
path: root/packages/contracts/test/exchange
diff options
context:
space:
mode:
Diffstat (limited to 'packages/contracts/test/exchange')
-rw-r--r--packages/contracts/test/exchange/core.ts248
1 files changed, 124 insertions, 124 deletions
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<LogFillContractEventArgs>;
+ const log = logDecoder.tryToDecodeLogOrNoop(res.logs[0]) as LogWithDecodedArgs<LogFillContractEventArgs>;
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<LogFillContractEventArgs>).args;
+ const log = logDecoder.tryToDecodeLogOrNoop(res.logs[0]) as LogWithDecodedArgs<LogFillContractEventArgs>;
+ 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<LogFillContractEventArgs>).args;
+ const log = logDecoder.tryToDecodeLogOrNoop(res.logs[0]) as LogWithDecodedArgs<LogFillContractEventArgs>;
+ 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<LogErrorContractEventArgs>;
- const errCode = log.args.errorId;
+ const log = logDecoder.tryToDecodeLogOrNoop(res.logs[0]) as LogWithDecodedArgs<LogErrorContractEventArgs>;
+ 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<LogErrorContractEventArgs>;
- const errCode = log.args.errorId;
+ const log = logDecoder.tryToDecodeLogOrNoop(res.logs[0]) as LogWithDecodedArgs<LogErrorContractEventArgs>;
+ 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<LogFillContractEventArgs>;
+ const log = logDecoder.tryToDecodeLogOrNoop(res.logs[0]) as LogWithDecodedArgs<LogFillContractEventArgs>;
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<LogCancelContractEventArgs>;
+ const log = logDecoder.tryToDecodeLogOrNoop(res.logs[0]) as LogWithDecodedArgs<LogCancelContractEventArgs>;
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<LogErrorContractEventArgs>;
- const errCode = log.args.errorId;
+ const log = logDecoder.tryToDecodeLogOrNoop(res.logs[0]) as LogWithDecodedArgs<LogErrorContractEventArgs>;
+ 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<LogErrorContractEventArgs>;
- const errCode = log.args.errorId;
+ const log = logDecoder.tryToDecodeLogOrNoop(res.logs[0]) as LogWithDecodedArgs<LogErrorContractEventArgs>;
+ const errCode = log.args.errorId.toNumber();
expect(errCode).to.be.equal(ExchangeContractErrs.ERROR_ORDER_EXPIRED);
});
});