aboutsummaryrefslogtreecommitdiffstats
path: root/packages/contracts/test
diff options
context:
space:
mode:
Diffstat (limited to 'packages/contracts/test')
-rw-r--r--packages/contracts/test/exchange/core.ts129
1 files changed, 38 insertions, 91 deletions
diff --git a/packages/contracts/test/exchange/core.ts b/packages/contracts/test/exchange/core.ts
index f6bf7d576..9cd4a30f9 100644
--- a/packages/contracts/test/exchange/core.ts
+++ b/packages/contracts/test/exchange/core.ts
@@ -55,7 +55,6 @@ describe('Exchange', () => {
let dgd: DummyTokenContract;
let zrx: DummyTokenContract;
let ck: DummyERC721TokenContract;
- let et: DummyERC721TokenContract;
let exchange: ExchangeContract;
let tokenTransferProxy: TokenTransferProxyContract;
let assetProxyDispatcher: AssetProxyDispatcherContract;
@@ -77,7 +76,7 @@ describe('Exchange', () => {
const accounts = await web3Wrapper.getAvailableAddressesAsync();
makerAddress = accounts[0];
[tokenOwner, takerAddress, feeRecipientAddress] = accounts;
- const [repInstance, dgdInstance, zrxInstance, ckInstance, etInstance] = await Promise.all([
+ const [repInstance, dgdInstance, zrxInstance, ckInstance] = await Promise.all([
deployer.deployAsync(ContractName.DummyToken, constants.DUMMY_TOKEN_ARGS),
deployer.deployAsync(ContractName.DummyToken, constants.DUMMY_TOKEN_ARGS),
deployer.deployAsync(ContractName.DummyToken, constants.DUMMY_TOKEN_ARGS),
@@ -88,14 +87,21 @@ describe('Exchange', () => {
dgd = new DummyTokenContract(dgdInstance.abi, dgdInstance.address, provider);
zrx = new DummyTokenContract(zrxInstance.abi, zrxInstance.address, provider);
ck = new DummyERC721TokenContract(ckInstance.abi, ckInstance.address, provider);
- et = new DummyERC721TokenContract(etInstance.abi, etInstance.address, provider);
+ // Deploy Asset Proxy Dispatcher
+ const assetProxyDispatcherInstance = await deployer.deployAsync(ContractName.AssetProxyDispatcher);
+ assetProxyDispatcher = new AssetProxyDispatcherContract(
+ assetProxyDispatcherInstance.abi,
+ assetProxyDispatcherInstance.address,
+ provider,
+ );
+ // Deploy TokenTransferProxy
const tokenTransferProxyInstance = await deployer.deployAsync(ContractName.TokenTransferProxy);
tokenTransferProxy = new TokenTransferProxyContract(
tokenTransferProxyInstance.abi,
tokenTransferProxyInstance.address,
provider,
);
-
+ // Deploy ERC20 V1 Proxy
const erc20TransferProxyV1Instance = await deployer.deployAsync(ContractName.ERC20Proxy_V1, [
tokenTransferProxy.address,
]);
@@ -104,44 +110,9 @@ describe('Exchange', () => {
erc20TransferProxyV1Instance.address,
provider,
);
-
- const erc20TransferProxyInstance = await deployer.deployAsync(ContractName.ERC20Proxy);
- erc20TransferProxy = new ERC20ProxyContract(
- erc20TransferProxyInstance.abi,
- erc20TransferProxyInstance.address,
- provider,
- );
-
- erc721TransferProxyInstance = await deployer.deployAsync(ContractName.ERC721Proxy);
- erc721TransferProxy = new ERC721ProxyContract(
- erc721TransferProxyInstance.abi,
- erc721TransferProxyInstance.address,
- provider,
- );
-
- const assetProxyDispatcherInstance = await deployer.deployAsync(ContractName.AssetProxyDispatcher);
- assetProxyDispatcher = new AssetProxyDispatcherContract(
- assetProxyDispatcherInstance.abi,
- assetProxyDispatcherInstance.address,
- provider,
- );
-
- const exchangeInstance = await deployer.deployAsync(ContractName.Exchange, [
- zrx.address,
- encodeERC20ProxyData(zrx.address),
- assetProxyDispatcher.address,
- ]);
- exchange = new ExchangeContract(exchangeInstance.abi, exchangeInstance.address, provider);
- await assetProxyDispatcher.addAuthorizedAddress.sendTransactionAsync(exchange.address, { from: accounts[0] });
await erc20TransferProxyV1.addAuthorizedAddress.sendTransactionAsync(assetProxyDispatcher.address, {
from: accounts[0],
});
- await erc20TransferProxy.addAuthorizedAddress.sendTransactionAsync(assetProxyDispatcher.address, {
- from: accounts[0],
- });
- await erc721TransferProxy.addAuthorizedAddress.sendTransactionAsync(assetProxyDispatcher.address, {
- from: accounts[0],
- });
await tokenTransferProxy.addAuthorizedAddress.sendTransactionAsync(erc20TransferProxyV1.address, {
from: accounts[0],
});
@@ -151,18 +122,46 @@ describe('Exchange', () => {
ZeroEx.NULL_ADDRESS,
{ from: accounts[0] },
);
+ // Deploy ERC20 Proxy
+ const erc20TransferProxyInstance = await deployer.deployAsync(ContractName.ERC20Proxy);
+ erc20TransferProxy = new ERC20ProxyContract(
+ erc20TransferProxyInstance.abi,
+ erc20TransferProxyInstance.address,
+ provider,
+ );
+ await erc20TransferProxy.addAuthorizedAddress.sendTransactionAsync(assetProxyDispatcher.address, {
+ from: accounts[0],
+ });
await assetProxyDispatcher.addAssetProxy.sendTransactionAsync(
AssetProxyId.ERC20,
erc20TransferProxy.address,
ZeroEx.NULL_ADDRESS,
{ from: accounts[0] },
);
+ // Deploy ERC721 Proxy
+ const erc721TransferProxyInstance = await deployer.deployAsync(ContractName.ERC721Proxy);
+ erc721TransferProxy = new ERC721ProxyContract(
+ erc721TransferProxyInstance.abi,
+ erc721TransferProxyInstance.address,
+ provider,
+ );
+ await erc721TransferProxy.addAuthorizedAddress.sendTransactionAsync(assetProxyDispatcher.address, {
+ from: accounts[0],
+ });
await assetProxyDispatcher.addAssetProxy.sendTransactionAsync(
AssetProxyId.ERC721,
erc721TransferProxy.address,
ZeroEx.NULL_ADDRESS,
{ from: accounts[0] },
);
+ // Deploy and configure Exchange
+ const exchangeInstance = await deployer.deployAsync(ContractName.Exchange, [
+ zrx.address,
+ encodeERC20ProxyData(zrx.address),
+ assetProxyDispatcher.address,
+ ]);
+ exchange = new ExchangeContract(exchangeInstance.abi, exchangeInstance.address, provider);
+ await assetProxyDispatcher.addAuthorizedAddress.sendTransactionAsync(exchange.address, { from: accounts[0] });
zeroEx = new ZeroEx(provider, {
exchangeContractAddress: exchange.address,
networkId: constants.TESTRPC_NETWORK_ID,
@@ -228,9 +227,6 @@ describe('Exchange', () => {
}),
zrx.setBalance.sendTransactionAsync(makerAddress, INITIAL_BALANCE, { from: tokenOwner }),
zrx.setBalance.sendTransactionAsync(takerAddress, INITIAL_BALANCE, { from: tokenOwner }),
-
- // Distribute ck ERC721 tokens to maker & taker
- // maker owns [0x1010.., ... , 0x4040..] and taker owns [0x5050.., ..., 0x9090..]
ck.setApprovalForAll.sendTransactionAsync(erc721TransferProxy.address, true, { from: makerAddress }),
ck.setApprovalForAll.sendTransactionAsync(erc721TransferProxy.address, true, { from: takerAddress }),
ck.mint.sendTransactionAsync(
@@ -253,31 +249,6 @@ describe('Exchange', () => {
new BigNumber('0x4040404040404040404040404040404040404040404040404040404040404040'),
{ from: tokenOwner },
),
-
- // Distribute et ERC721 tokens to maker & taker
- // maker owns [0x1010.., ... , 0x4040..] and taker owns [0x5050.., ..., 0x9090..]
- et.setApprovalForAll.sendTransactionAsync(erc721TransferProxy.address, true, { from: makerAddress }),
- et.setApprovalForAll.sendTransactionAsync(erc721TransferProxy.address, true, { from: takerAddress }),
- et.mint.sendTransactionAsync(
- makerAddress,
- new BigNumber('0x1010101010101010101010101010101010101010101010101010101010101010'),
- { from: tokenOwner },
- ),
- et.mint.sendTransactionAsync(
- makerAddress,
- new BigNumber('0x2020202020202020202020202020202020202020202020202020202020202020'),
- { from: tokenOwner },
- ),
- et.mint.sendTransactionAsync(
- takerAddress,
- new BigNumber('0x3030303030303030303030303030303030303030303030303030303030303030'),
- { from: tokenOwner },
- ),
- et.mint.sendTransactionAsync(
- takerAddress,
- new BigNumber('0x4040404040404040404040404040404040404040404040404040404040404040'),
- { from: tokenOwner },
- ),
]);
});
beforeEach(async () => {
@@ -920,17 +891,14 @@ describe('Exchange', () => {
makerAssetData: encodeERC721ProxyData(ck.address, makerTokenId),
takerAssetData: encodeERC721ProxyData(ck.address, takerTokenId),
});
-
// Verify pre-conditions
const initialOwnerMakerToken = await ck.ownerOf.callAsync(makerTokenId);
expect(initialOwnerMakerToken).to.be.bignumber.equal(makerAddress);
const initialOwnerTakerToken = await ck.ownerOf.callAsync(takerTokenId);
expect(initialOwnerTakerToken).to.be.bignumber.equal(takerAddress);
-
// Call Exchange
const takerTokenFillAmount = signedOrder.takerTokenAmount;
const res = await exWrapper.fillOrderAsync(signedOrder, takerAddress, { takerTokenFillAmount });
-
// Verify post-conditions
const newOwnerMakerToken = await ck.ownerOf.callAsync(makerTokenId);
expect(newOwnerMakerToken).to.be.bignumber.equal(takerAddress);
@@ -950,17 +918,14 @@ describe('Exchange', () => {
makerAssetData: encodeERC721ProxyData(ck.address, makerTokenId),
takerAssetData: encodeERC721ProxyData(ck.address, takerTokenId),
});
-
// Verify pre-conditions
const initialOwnerMakerToken = await ck.ownerOf.callAsync(makerTokenId);
expect(initialOwnerMakerToken).to.be.bignumber.equal(makerAddress);
const initialOwnerTakerToken = await ck.ownerOf.callAsync(takerTokenId);
expect(initialOwnerTakerToken).to.be.bignumber.equal(takerAddress);
-
// Call Exchange
const takerTokenFillAmount = signedOrder.takerTokenAmount;
await exWrapper.fillOrderNoThrowAsync(signedOrder, takerAddress, { takerTokenFillAmount });
-
// Verify post-conditions
const newOwnerMakerToken = await ck.ownerOf.callAsync(makerTokenId);
expect(newOwnerMakerToken).to.be.bignumber.equal(takerAddress);
@@ -980,13 +945,11 @@ describe('Exchange', () => {
makerAssetData: encodeERC721ProxyData(ck.address, makerTokenId),
takerAssetData: encodeERC721ProxyData(ck.address, takerTokenId),
});
-
// Verify pre-conditions
const initialOwnerMakerToken = await ck.ownerOf.callAsync(makerTokenId);
expect(initialOwnerMakerToken).to.be.bignumber.not.equal(makerAddress);
const initialOwnerTakerToken = await ck.ownerOf.callAsync(takerTokenId);
expect(initialOwnerTakerToken).to.be.bignumber.equal(takerAddress);
-
// Call Exchange
const takerTokenFillAmount = signedOrder.takerTokenAmount;
return expect(
@@ -1006,13 +969,11 @@ describe('Exchange', () => {
makerAssetData: encodeERC721ProxyData(ck.address, makerTokenId),
takerAssetData: encodeERC721ProxyData(ck.address, takerTokenId),
});
-
// Verify pre-conditions
const initialOwnerMakerToken = await ck.ownerOf.callAsync(makerTokenId);
expect(initialOwnerMakerToken).to.be.bignumber.equal(makerAddress);
const initialOwnerTakerToken = await ck.ownerOf.callAsync(takerTokenId);
expect(initialOwnerTakerToken).to.be.bignumber.not.equal(takerAddress);
-
// Call Exchange
const takerTokenFillAmount = signedOrder.takerTokenAmount;
return expect(
@@ -1032,13 +993,11 @@ describe('Exchange', () => {
makerAssetData: encodeERC721ProxyData(ck.address, makerTokenId),
takerAssetData: encodeERC721ProxyData(ck.address, takerTokenId),
});
-
// Verify pre-conditions
const initialOwnerMakerToken = await ck.ownerOf.callAsync(makerTokenId);
expect(initialOwnerMakerToken).to.be.bignumber.equal(makerAddress);
const initialOwnerTakerToken = await ck.ownerOf.callAsync(takerTokenId);
expect(initialOwnerTakerToken).to.be.bignumber.equal(takerAddress);
-
// Call Exchange
const takerTokenFillAmount = signedOrder.takerTokenAmount;
return expect(
@@ -1058,13 +1017,11 @@ describe('Exchange', () => {
makerAssetData: encodeERC721ProxyData(ck.address, makerTokenId),
takerAssetData: encodeERC721ProxyData(ck.address, takerTokenId),
});
-
// Verify pre-conditions
const initialOwnerMakerToken = await ck.ownerOf.callAsync(makerTokenId);
expect(initialOwnerMakerToken).to.be.bignumber.equal(makerAddress);
const initialOwnerTakerToken = await ck.ownerOf.callAsync(takerTokenId);
expect(initialOwnerTakerToken).to.be.bignumber.equal(takerAddress);
-
// Call Exchange
const takerTokenFillAmount = signedOrder.takerTokenAmount;
return expect(
@@ -1084,13 +1041,11 @@ describe('Exchange', () => {
makerAssetData: encodeERC721ProxyData(ck.address, makerTokenId),
takerAssetData: encodeERC721ProxyData(ck.address, takerTokenId),
});
-
// Verify pre-conditions
const initialOwnerMakerToken = await ck.ownerOf.callAsync(makerTokenId);
expect(initialOwnerMakerToken).to.be.bignumber.equal(makerAddress);
const initialOwnerTakerToken = await ck.ownerOf.callAsync(takerTokenId);
expect(initialOwnerTakerToken).to.be.bignumber.equal(takerAddress);
-
// Call Exchange
const takerTokenFillAmount = signedOrder.takerTokenAmount;
return expect(
@@ -1109,20 +1064,16 @@ describe('Exchange', () => {
makerAssetData: encodeERC721ProxyData(ck.address, makerTokenId),
takerAssetData: encodeERC20ProxyData(dgd.address),
});
-
// Verify pre-conditions
const initialOwnerMakerToken = await ck.ownerOf.callAsync(makerTokenId);
expect(initialOwnerMakerToken).to.be.bignumber.equal(makerAddress);
-
// Call Exchange
balances = await dmyBalances.getAsync();
const takerTokenFillAmount = signedOrder.takerTokenAmount;
await exWrapper.fillOrderAsync(signedOrder, takerAddress, { takerTokenFillAmount });
-
// Verify ERC721 token was transferred from Maker to Taker
const newOwnerMakerToken = await ck.ownerOf.callAsync(makerTokenId);
expect(newOwnerMakerToken).to.be.bignumber.equal(takerAddress);
-
// Verify ERC20 tokens were transferred from Taker to Maker & fees were paid correctly
const newBalances = await dmyBalances.getAsync();
expect(newBalances[makerAddress][signedOrder.takerTokenAddress]).to.be.bignumber.equal(
@@ -1153,20 +1104,16 @@ describe('Exchange', () => {
takerAssetData: encodeERC721ProxyData(ck.address, takerTokenId),
makerAssetData: encodeERC20ProxyData(dgd.address),
});
-
// Verify pre-conditions
const initialOwnerTakerToken = await ck.ownerOf.callAsync(takerTokenId);
expect(initialOwnerTakerToken).to.be.bignumber.equal(takerAddress);
-
// Call Exchange
balances = await dmyBalances.getAsync();
const takerTokenFillAmount = signedOrder.takerTokenAmount;
await exWrapper.fillOrderAsync(signedOrder, takerAddress, { takerTokenFillAmount });
-
// Verify ERC721 token was transferred from Taker to Maker
const newOwnerTakerToken = await ck.ownerOf.callAsync(takerTokenId);
expect(newOwnerTakerToken).to.be.bignumber.equal(makerAddress);
-
// Verify ERC20 tokens were transferred from Maker to Taker & fees were paid correctly
const newBalances = await dmyBalances.getAsync();
expect(newBalances[takerAddress][signedOrder.makerTokenAddress]).to.be.bignumber.equal(