diff --git a/contracts/coordinator/test/coordinator.ts b/contracts/coordinator/test/coordinator.ts index fe31ba5038..6b69ddda6b 100644 --- a/contracts/coordinator/test/coordinator.ts +++ b/contracts/coordinator/test/coordinator.ts @@ -2,15 +2,17 @@ import { ERC20ProxyContract, ERC20Wrapper } from '@0x/contracts-asset-proxy'; import { DummyERC20TokenContract } from '@0x/contracts-erc20'; import { artifacts as exchangeArtifacts, + constants as exchangeConstants, ExchangeCancelEventArgs, ExchangeCancelUpToEventArgs, ExchangeContract, + exchangeDataEncoder, ExchangeFillEventArgs, + ExchangeFunctionName, } from '@0x/contracts-exchange'; import { chaiSetup, constants, - exchangeDataEncoder, expectTransactionFailedAsync, getLatestBlockTimestampAsync, OrderFactory, @@ -128,7 +130,7 @@ describe('Coordinator tests', () => { }); describe('single order fills', () => { - for (const fnName of constants.SINGLE_FILL_FN_NAMES) { + for (const fnName of exchangeConstants.SINGLE_FILL_FN_NAMES) { it(`${fnName} should fill the order with a signed approval`, async () => { const orders = [await orderFactory.newSignedOrderAsync()]; const data = exchangeDataEncoder.encodeOrdersToExchangeData(fnName, orders); @@ -292,7 +294,7 @@ describe('Coordinator tests', () => { } }); describe('batch order fills', () => { - for (const fnName of [...constants.MARKET_FILL_FN_NAMES, ...constants.BATCH_FILL_FN_NAMES]) { + for (const fnName of [...exchangeConstants.MARKET_FILL_FN_NAMES, ...exchangeConstants.BATCH_FILL_FN_NAMES]) { it(`${fnName} should fill the orders with a signed approval`, async () => { const orders = [await orderFactory.newSignedOrderAsync(), await orderFactory.newSignedOrderAsync()]; const data = exchangeDataEncoder.encodeOrdersToExchangeData(fnName, orders); @@ -443,7 +445,7 @@ describe('Coordinator tests', () => { describe('cancels', () => { it('cancelOrder call should be successful without an approval', async () => { const orders = [await orderFactory.newSignedOrderAsync()]; - const data = exchangeDataEncoder.encodeOrdersToExchangeData(constants.CANCEL_ORDER, orders); + const data = exchangeDataEncoder.encodeOrdersToExchangeData(ExchangeFunctionName.CancelOrder, orders); const transaction = makerTransactionFactory.newSignedTransaction(data); const transactionReceipt = await web3Wrapper.awaitTransactionSuccessAsync( await coordinatorContract.executeTransaction.sendTransactionAsync( @@ -471,7 +473,7 @@ describe('Coordinator tests', () => { }); it('batchCancelOrders call should be successful without an approval', async () => { const orders = [await orderFactory.newSignedOrderAsync(), await orderFactory.newSignedOrderAsync()]; - const data = exchangeDataEncoder.encodeOrdersToExchangeData(constants.BATCH_CANCEL_ORDERS, orders); + const data = exchangeDataEncoder.encodeOrdersToExchangeData(ExchangeFunctionName.BatchCancelOrders, orders); const transaction = makerTransactionFactory.newSignedTransaction(data); const transactionReceipt = await web3Wrapper.awaitTransactionSuccessAsync( await coordinatorContract.executeTransaction.sendTransactionAsync( @@ -501,7 +503,7 @@ describe('Coordinator tests', () => { }); it('cancelOrdersUpTo call should be successful without an approval', async () => { const orders: SignedOrder[] = []; - const data = exchangeDataEncoder.encodeOrdersToExchangeData(constants.CANCEL_ORDERS_UP_TO, orders); + const data = exchangeDataEncoder.encodeOrdersToExchangeData(ExchangeFunctionName.CancelOrdersUpTo, orders); const transaction = makerTransactionFactory.newSignedTransaction(data); const transactionReceipt = await web3Wrapper.awaitTransactionSuccessAsync( await coordinatorContract.executeTransaction.sendTransactionAsync( diff --git a/contracts/coordinator/test/mixins.ts b/contracts/coordinator/test/mixins.ts index 8cbd31775d..c6bb878ee3 100644 --- a/contracts/coordinator/test/mixins.ts +++ b/contracts/coordinator/test/mixins.ts @@ -1,8 +1,8 @@ +import { constants as exchangeConstants, exchangeDataEncoder, ExchangeFunctionName } from '@0x/contracts-exchange'; import { addressUtils, chaiSetup, constants, - exchangeDataEncoder, expectContractCallFailedAsync, getLatestBlockTimestampAsync, provider, @@ -144,7 +144,7 @@ describe('Mixins tests', () => { }); describe('decodeOrdersFromFillData', () => { - for (const fnName of constants.SINGLE_FILL_FN_NAMES) { + for (const fnName of exchangeConstants.SINGLE_FILL_FN_NAMES) { it(`should correctly decode the orders for ${fnName} data`, async () => { const orders = [defaultOrder]; const data = exchangeDataEncoder.encodeOrdersToExchangeData(fnName, orders); @@ -157,7 +157,7 @@ describe('Mixins tests', () => { expect(orders).to.deep.eq(decodedSignedOrders); }); } - for (const fnName of constants.BATCH_FILL_FN_NAMES) { + for (const fnName of exchangeConstants.BATCH_FILL_FN_NAMES) { it(`should correctly decode the orders for ${fnName} data`, async () => { const orders = [defaultOrder, defaultOrder]; const data = exchangeDataEncoder.encodeOrdersToExchangeData(fnName, orders); @@ -170,7 +170,7 @@ describe('Mixins tests', () => { expect(orders).to.deep.eq(decodedSignedOrders); }); } - for (const fnName of constants.MARKET_FILL_FN_NAMES) { + for (const fnName of exchangeConstants.MARKET_FILL_FN_NAMES) { it(`should correctly decode the orders for ${fnName} data`, async () => { const orders = [defaultOrder, defaultOrder]; const data = exchangeDataEncoder.encodeOrdersToExchangeData(fnName, orders); @@ -183,7 +183,11 @@ describe('Mixins tests', () => { expect(orders).to.deep.eq(decodedSignedOrders); }); } - for (const fnName of [constants.CANCEL_ORDER, constants.BATCH_CANCEL_ORDERS, constants.CANCEL_ORDERS_UP_TO]) { + for (const fnName of [ + ExchangeFunctionName.CancelOrder, + ExchangeFunctionName.BatchCancelOrders, + ExchangeFunctionName.CancelOrdersUpTo, + ]) { it(`should correctly decode the orders for ${fnName} data`, async () => { const orders = [defaultOrder, defaultOrder]; const data = exchangeDataEncoder.encodeOrdersToExchangeData(fnName, orders); @@ -208,7 +212,7 @@ describe('Mixins tests', () => { }); describe('Single order approvals', () => { - for (const fnName of constants.SINGLE_FILL_FN_NAMES) { + for (const fnName of exchangeConstants.SINGLE_FILL_FN_NAMES) { it(`Should be successful: function=${fnName}, caller=tx_signer, senderAddress=[verifier], approval_sig=[approver1], expiration=[valid]`, async () => { const orders = [defaultOrder]; const data = exchangeDataEncoder.encodeOrdersToExchangeData(fnName, orders); @@ -377,9 +381,9 @@ describe('Mixins tests', () => { }); describe('Batch order approvals', () => { for (const fnName of [ - ...constants.BATCH_FILL_FN_NAMES, - ...constants.MARKET_FILL_FN_NAMES, - constants.MATCH_ORDERS, + ...exchangeConstants.BATCH_FILL_FN_NAMES, + ...exchangeConstants.MARKET_FILL_FN_NAMES, + ExchangeFunctionName.MatchOrders, ]) { it(`Should be successful: function=${fnName} caller=tx_signer, senderAddress=[verifier,verifier], feeRecipient=[approver1,approver1], approval_sig=[approver1], expiration=[valid]`, async () => { const orders = [defaultOrder, defaultOrder]; @@ -694,7 +698,7 @@ describe('Mixins tests', () => { describe('cancels', () => { it('should allow the tx signer to call `cancelOrder` without approval', async () => { const orders = [defaultOrder]; - const data = exchangeDataEncoder.encodeOrdersToExchangeData(constants.CANCEL_ORDER, orders); + const data = exchangeDataEncoder.encodeOrdersToExchangeData(ExchangeFunctionName.CancelOrder, orders); const transaction = transactionFactory.newSignedTransaction(data); await mixins.assertValidCoordinatorApprovals.callAsync( transaction, @@ -707,7 +711,7 @@ describe('Mixins tests', () => { }); it('should allow the tx signer to call `batchCancelOrders` without approval', async () => { const orders = [defaultOrder, defaultOrder]; - const data = exchangeDataEncoder.encodeOrdersToExchangeData(constants.BATCH_CANCEL_ORDERS, orders); + const data = exchangeDataEncoder.encodeOrdersToExchangeData(ExchangeFunctionName.BatchCancelOrders, orders); const transaction = transactionFactory.newSignedTransaction(data); await mixins.assertValidCoordinatorApprovals.callAsync( transaction, @@ -719,8 +723,7 @@ describe('Mixins tests', () => { ); }); it('should allow the tx signer to call `cancelOrdersUpTo` without approval', async () => { - const orders: SignedOrder[] = []; - const data = exchangeDataEncoder.encodeOrdersToExchangeData(constants.CANCEL_ORDERS_UP_TO, orders); + const data = exchangeDataEncoder.encodeOrdersToExchangeData(ExchangeFunctionName.CancelOrdersUpTo); const transaction = transactionFactory.newSignedTransaction(data); await mixins.assertValidCoordinatorApprovals.callAsync( transaction, diff --git a/contracts/exchange/test/core.ts b/contracts/exchange/test/core.ts index 84269275f2..bee19b1327 100644 --- a/contracts/exchange/test/core.ts +++ b/contracts/exchange/test/core.ts @@ -42,6 +42,7 @@ import * as _ from 'lodash'; import { Erc1155Wrapper } from '../../erc1155/lib/src'; import { artifacts, + constants as exchangeConstants, ExchangeCancelEventArgs, ExchangeContract, ExchangeWrapper, @@ -247,7 +248,7 @@ describe('Exchange core', () => { }); }); }; - describe('fillOrder reentrancy tests', () => reentrancyTest(constants.FUNCTIONS_WITH_MUTEX)); + describe('fillOrder reentrancy tests', () => reentrancyTest(exchangeConstants.FUNCTIONS_WITH_MUTEX)); it('should throw if signature is invalid', async () => { signedOrder = await orderFactory.newSignedOrderAsync({ diff --git a/contracts/exchange/test/match_orders.ts b/contracts/exchange/test/match_orders.ts index 75859dc646..43b397867f 100644 --- a/contracts/exchange/test/match_orders.ts +++ b/contracts/exchange/test/match_orders.ts @@ -21,6 +21,7 @@ import * as _ from 'lodash'; import { artifacts, + constants as exchangeConstants, ExchangeContract, ExchangeWrapper, MatchOrderTester, @@ -592,7 +593,7 @@ describe('matchOrders', () => { }); }); }; - describe('matchOrders reentrancy tests', () => reentrancyTest(constants.FUNCTIONS_WITH_MUTEX)); + describe('matchOrders reentrancy tests', () => reentrancyTest(exchangeConstants.FUNCTIONS_WITH_MUTEX)); it('should transfer the correct amounts when orders completely fill each other', async () => { // Create orders to match diff --git a/contracts/exchange/test/wrapper.ts b/contracts/exchange/test/wrapper.ts index 5fa7b0460d..4a540c28ea 100644 --- a/contracts/exchange/test/wrapper.ts +++ b/contracts/exchange/test/wrapper.ts @@ -20,7 +20,13 @@ import { Web3Wrapper } from '@0x/web3-wrapper'; import * as chai from 'chai'; import * as _ from 'lodash'; -import { artifacts, ExchangeContract, ExchangeWrapper, ReentrantERC20TokenContract } from '../src'; +import { + artifacts, + constants as exchangeConstants, + ExchangeContract, + ExchangeWrapper, + ReentrantERC20TokenContract, +} from '../src'; chaiSetup.configure(); const expect = chai.expect; @@ -155,7 +161,7 @@ describe('Exchange wrappers', () => { }); }); }; - describe('fillOrKillOrder reentrancy tests', () => reentrancyTest(constants.FUNCTIONS_WITH_MUTEX)); + describe('fillOrKillOrder reentrancy tests', () => reentrancyTest(exchangeConstants.FUNCTIONS_WITH_MUTEX)); it('should transfer the correct amounts', async () => { const signedOrder = await orderFactory.newSignedOrderAsync({ @@ -244,7 +250,7 @@ describe('Exchange wrappers', () => { }); }); }; - describe('fillOrderNoThrow reentrancy tests', () => reentrancyTest(constants.FUNCTIONS_WITH_MUTEX)); + describe('fillOrderNoThrow reentrancy tests', () => reentrancyTest(exchangeConstants.FUNCTIONS_WITH_MUTEX)); it('should transfer the correct amounts', async () => { const signedOrder = await orderFactory.newSignedOrderAsync({ @@ -462,7 +468,7 @@ describe('Exchange wrappers', () => { }); }); }; - describe('batchFillOrders reentrancy tests', () => reentrancyTest(constants.FUNCTIONS_WITH_MUTEX)); + describe('batchFillOrders reentrancy tests', () => reentrancyTest(exchangeConstants.FUNCTIONS_WITH_MUTEX)); it('should transfer the correct amounts', async () => { const takerAssetFillAmounts: BigNumber[] = []; @@ -529,7 +535,8 @@ describe('Exchange wrappers', () => { }); }); }; - describe('batchFillOrKillOrders reentrancy tests', () => reentrancyTest(constants.FUNCTIONS_WITH_MUTEX)); + describe('batchFillOrKillOrders reentrancy tests', () => + reentrancyTest(exchangeConstants.FUNCTIONS_WITH_MUTEX)); it('should transfer the correct amounts', async () => { const takerAssetFillAmounts: BigNumber[] = []; @@ -613,7 +620,8 @@ describe('Exchange wrappers', () => { }); }); }; - describe('batchFillOrdersNoThrow reentrancy tests', () => reentrancyTest(constants.FUNCTIONS_WITH_MUTEX)); + describe('batchFillOrdersNoThrow reentrancy tests', () => + reentrancyTest(exchangeConstants.FUNCTIONS_WITH_MUTEX)); it('should transfer the correct amounts', async () => { const takerAssetFillAmounts: BigNumber[] = []; @@ -746,7 +754,7 @@ describe('Exchange wrappers', () => { }); }); }; - describe('marketSellOrders reentrancy tests', () => reentrancyTest(constants.FUNCTIONS_WITH_MUTEX)); + describe('marketSellOrders reentrancy tests', () => reentrancyTest(exchangeConstants.FUNCTIONS_WITH_MUTEX)); it('should stop when the entire takerAssetFillAmount is filled', async () => { const takerAssetFillAmount = signedOrders[0].takerAssetAmount.plus( @@ -865,7 +873,8 @@ describe('Exchange wrappers', () => { }); }); }; - describe('marketSellOrdersNoThrow reentrancy tests', () => reentrancyTest(constants.FUNCTIONS_WITH_MUTEX)); + describe('marketSellOrdersNoThrow reentrancy tests', () => + reentrancyTest(exchangeConstants.FUNCTIONS_WITH_MUTEX)); it('should stop when the entire takerAssetFillAmount is filled', async () => { const takerAssetFillAmount = signedOrders[0].takerAssetAmount.plus( @@ -1011,7 +1020,7 @@ describe('Exchange wrappers', () => { }); }); }; - describe('marketBuyOrders reentrancy tests', () => reentrancyTest(constants.FUNCTIONS_WITH_MUTEX)); + describe('marketBuyOrders reentrancy tests', () => reentrancyTest(exchangeConstants.FUNCTIONS_WITH_MUTEX)); it('should stop when the entire makerAssetFillAmount is filled', async () => { const makerAssetFillAmount = signedOrders[0].makerAssetAmount.plus( @@ -1130,7 +1139,8 @@ describe('Exchange wrappers', () => { }); }); }; - describe('marketBuyOrdersNoThrow reentrancy tests', () => reentrancyTest(constants.FUNCTIONS_WITH_MUTEX)); + describe('marketBuyOrdersNoThrow reentrancy tests', () => + reentrancyTest(exchangeConstants.FUNCTIONS_WITH_MUTEX)); it('should stop when the entire makerAssetFillAmount is filled', async () => { const makerAssetFillAmount = signedOrders[0].makerAssetAmount.plus(