diff options
-rw-r--r-- | packages/contracts/test/asset_proxy_dispatcher/proxies.ts | 77 |
1 files changed, 25 insertions, 52 deletions
diff --git a/packages/contracts/test/asset_proxy_dispatcher/proxies.ts b/packages/contracts/test/asset_proxy_dispatcher/proxies.ts index 91346cb6f..00161c186 100644 --- a/packages/contracts/test/asset_proxy_dispatcher/proxies.ts +++ b/packages/contracts/test/asset_proxy_dispatcher/proxies.ts @@ -12,11 +12,7 @@ import { ERC20ProxyContract } from '../../src/contract_wrappers/generated/e_r_c2 import { ERC721ProxyContract } from '../../src/contract_wrappers/generated/e_r_c721_proxy'; import { ERC20Proxy_v1Contract } from '../../src/contract_wrappers/generated/erc20proxy_v1'; import { TokenTransferProxyContract } from '../../src/contract_wrappers/generated/token_transfer_proxy'; -import { - encodeERC20ProxyData, - encodeERC20V1ProxyData, - encodeERC721ProxyData, -} from '../../src/utils/asset_proxy_utils'; +import { encodeERC20ProxyData, encodeERC20V1ProxyData, encodeERC721ProxyData } from '../../src/utils/asset_proxy_utils'; import { Balances } from '../../src/utils/balances'; import { constants } from '../../src/utils/constants'; import { AssetProxyId, ContractName } from '../../src/utils/types'; @@ -31,7 +27,7 @@ const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper); describe('Asset Transfer Proxies', () => { let owner: string; let notOwner: string; - let exchangeAddress: string; + let assetProxyDispatcherAddress: string; let tokenOwner: string; let makerAddress: string; let takerAddress: string; @@ -47,19 +43,21 @@ describe('Asset Transfer Proxies', () => { const INITIAL_BALANCE = new BigNumber(10000); before(async () => { + // Setup accounts & addresses const accounts = await web3Wrapper.getAvailableAddressesAsync(); owner = tokenOwner = accounts[0]; notOwner = accounts[1]; - exchangeAddress = accounts[2]; + assetProxyDispatcherAddress = accounts[2]; makerAddress = accounts[3]; takerAddress = accounts[4]; + // 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, ]); @@ -68,28 +66,33 @@ describe('Asset Transfer Proxies', () => { erc20TransferProxyV1Instance.address, provider, ); - + await erc20TransferProxyV1.addAuthorizedAddress.sendTransactionAsync(assetProxyDispatcherAddress, { + from: accounts[0], + }); + await tokenTransferProxy.addAuthorizedAddress.sendTransactionAsync(erc20TransferProxyV1.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(assetProxyDispatcherAddress, { + from: accounts[0], + }); + // Deploy ERC721 Proxy const 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, - ); - + await erc721TransferProxy.addAuthorizedAddress.sendTransactionAsync(assetProxyDispatcherAddress, { + from: accounts[0], + }); + // Deploy zrx and set initial balances const zrxInstance = await deployer.deployAsync(ContractName.DummyToken, constants.DUMMY_TOKEN_ARGS); zrx = new DummyTokenContract(zrxInstance.abi, zrxInstance.address, provider); await zrx.setBalance.sendTransactionAsync(makerAddress, INITIAL_BALANCE, { from: tokenOwner }); @@ -107,27 +110,12 @@ describe('Asset Transfer Proxies', () => { await zrx.approve.sendTransactionAsync(erc20TransferProxy.address, INITIAL_BALANCE, { from: makerAddress, }); - + // Deploy ck and set initial balances const ckInstance = await deployer.deployAsync(ContractName.DummyERC721Token, constants.DUMMY_ERC721TOKEN_ARGS); ck = new DummyERC721TokenContract(ckInstance.abi, ckInstance.address, provider); await ck.setApprovalForAll.sendTransactionAsync(erc721TransferProxy.address, true, { from: makerAddress }); await ck.setApprovalForAll.sendTransactionAsync(erc721TransferProxy.address, true, { from: takerAddress }); await ck.mint.sendTransactionAsync(makerAddress, makerTokenId, { from: tokenOwner }); - await assetProxyDispatcher.addAuthorizedAddress.sendTransactionAsync(exchangeAddress, { - from: accounts[0], - }); - await erc20TransferProxyV1.addAuthorizedAddress.sendTransactionAsync(exchangeAddress, { - from: accounts[0], - }); - await erc20TransferProxy.addAuthorizedAddress.sendTransactionAsync(exchangeAddress, { - from: accounts[0], - }); - await erc721TransferProxy.addAuthorizedAddress.sendTransactionAsync(exchangeAddress, { - from: accounts[0], - }); - await tokenTransferProxy.addAuthorizedAddress.sendTransactionAsync(erc20TransferProxyV1.address, { - from: accounts[0], - }); }); beforeEach(async () => { await blockchainLifecycle.startAsync(); @@ -135,7 +123,6 @@ describe('Asset Transfer Proxies', () => { afterEach(async () => { await blockchainLifecycle.revertAsync(); }); - describe('Transfer Proxy - ERC20_V1', () => { it('should successfully encode/decode metadata', async () => { const metadata = await erc20TransferProxyV1.encodeMetadata.callAsync(AssetProxyId.ERC20_V1, zrx.address); @@ -166,7 +153,6 @@ describe('Asset Transfer Proxies', () => { it('should successfully transfer tokens', async () => { // Construct metadata for ERC20 proxy const encodedProxyMetadata = encodeERC20V1ProxyData(zrx.address); - // Perform a transfer from makerAddress to takerAddress const balances = await dmyBalances.getAsync(); const amount = new BigNumber(10); @@ -175,9 +161,8 @@ describe('Asset Transfer Proxies', () => { makerAddress, takerAddress, amount, - { from: exchangeAddress }, + { from: assetProxyDispatcherAddress }, ); - // Verify transfer was successful const newBalances = await dmyBalances.getAsync(); expect(newBalances[makerAddress][zrx.address]).to.be.bignumber.equal( @@ -191,7 +176,6 @@ describe('Asset Transfer Proxies', () => { it('should throw if requesting address is not authorized', async () => { // Construct metadata for ERC20 proxy const encodedProxyMetadata = encodeERC20V1ProxyData(zrx.address); - // Perform a transfer from makerAddress to takerAddress const balances = await dmyBalances.getAsync(); const amount = new BigNumber(10); @@ -237,7 +221,6 @@ describe('Asset Transfer Proxies', () => { it('should successfully transfer tokens', async () => { // Construct metadata for ERC20 proxy const encodedProxyMetadata = encodeERC20ProxyData(zrx.address); - // Perform a transfer from makerAddress to takerAddress const balances = await dmyBalances.getAsync(); const amount = new BigNumber(10); @@ -246,9 +229,8 @@ describe('Asset Transfer Proxies', () => { makerAddress, takerAddress, amount, - { from: exchangeAddress }, + { from: assetProxyDispatcherAddress }, ); - // Verify transfer was successful const newBalances = await dmyBalances.getAsync(); expect(newBalances[makerAddress][zrx.address]).to.be.bignumber.equal( @@ -262,7 +244,6 @@ describe('Asset Transfer Proxies', () => { it('should throw if requesting address is not authorized', async () => { // Construct metadata for ERC20 proxy const encodedProxyMetadata = encodeERC20ProxyData(zrx.address); - // Perform a transfer from makerAddress to takerAddress const balances = await dmyBalances.getAsync(); const amount = new BigNumber(10); @@ -320,11 +301,9 @@ describe('Asset Transfer Proxies', () => { it('should successfully transfer tokens', async () => { // Construct metadata for ERC20 proxy const encodedProxyMetadata = encodeERC721ProxyData(ck.address, makerTokenId); - // Verify pre-condition const ownerMakerToken = await ck.ownerOf.callAsync(makerTokenId); expect(ownerMakerToken).to.be.bignumber.equal(makerAddress); - // Perform a transfer from makerAddress to takerAddress const balances = await dmyBalances.getAsync(); const amount = new BigNumber(1); @@ -333,9 +312,8 @@ describe('Asset Transfer Proxies', () => { makerAddress, takerAddress, amount, - { from: exchangeAddress }, + { from: assetProxyDispatcherAddress }, ); - // Verify transfer was successful const newOwnerMakerToken = await ck.ownerOf.callAsync(makerTokenId); expect(newOwnerMakerToken).to.be.bignumber.equal(takerAddress); @@ -344,11 +322,9 @@ describe('Asset Transfer Proxies', () => { it('should throw if transferring 0 amount of a token', async () => { // Construct metadata for ERC20 proxy const encodedProxyMetadata = encodeERC721ProxyData(ck.address, makerTokenId); - // Verify pre-condition const ownerMakerToken = await ck.ownerOf.callAsync(makerTokenId); expect(ownerMakerToken).to.be.bignumber.equal(makerAddress); - // Perform a transfer from makerAddress to takerAddress const balances = await dmyBalances.getAsync(); const amount = new BigNumber(0); @@ -366,11 +342,9 @@ describe('Asset Transfer Proxies', () => { it('should throw if transferring >1 amount of a token', async () => { // Construct metadata for ERC20 proxy const encodedProxyMetadata = encodeERC721ProxyData(ck.address, makerTokenId); - // Verify pre-condition const ownerMakerToken = await ck.ownerOf.callAsync(makerTokenId); expect(ownerMakerToken).to.be.bignumber.equal(makerAddress); - // Perform a transfer from makerAddress to takerAddress const balances = await dmyBalances.getAsync(); const amount = new BigNumber(500); @@ -388,7 +362,6 @@ describe('Asset Transfer Proxies', () => { it('should throw if requesting address is not authorized', async () => { // Construct metadata for ERC20 proxy const encodedProxyMetadata = encodeERC721ProxyData(zrx.address, makerTokenId); - // Perform a transfer from makerAddress to takerAddress const balances = await dmyBalances.getAsync(); const amount = new BigNumber(1); |