Rebase and address review comments.
This commit is contained in:
parent
3e8f9a6b53
commit
ae650849b0
@ -28,6 +28,12 @@ import * as chai from 'chai';
|
||||
import { LogWithDecodedArgs } from 'ethereum-types';
|
||||
import * as _ from 'lodash';
|
||||
|
||||
import {
|
||||
encodeERC1155AssetData,
|
||||
encodeERC20AssetData,
|
||||
encodeERC721AssetData,
|
||||
encodeMultiAssetData,
|
||||
} from '../src/asset_data';
|
||||
import { ERC1155ProxyWrapper } from '../src/erc1155_proxy_wrapper';
|
||||
import { ERC20Wrapper } from '../src/erc20_wrapper';
|
||||
import { ERC721Wrapper } from '../src/erc721_wrapper';
|
||||
@ -40,7 +46,6 @@ chaiSetup.configure();
|
||||
const expect = chai.expect;
|
||||
const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper);
|
||||
const assetProxyInterface = new IAssetProxyContract(constants.NULL_ADDRESS, provider);
|
||||
const assetDataInterface = new IAssetDataContract(constants.NULL_ADDRESS, provider);
|
||||
|
||||
// tslint:disable:no-unnecessary-type-assertion
|
||||
describe('Asset Transfer Proxies', () => {
|
||||
@ -218,9 +223,7 @@ describe('Asset Transfer Proxies', () => {
|
||||
describe('transferFrom', () => {
|
||||
it('should successfully transfer tokens', async () => {
|
||||
// Construct ERC20 asset data
|
||||
const encodedAssetData = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const encodedAssetData = encodeERC20AssetData(erc20TokenA.address);
|
||||
// Perform a transfer from fromAddress to toAddress
|
||||
const erc20Balances = await erc20Wrapper.getBalancesAsync();
|
||||
const amount = new BigNumber(10);
|
||||
@ -247,9 +250,7 @@ describe('Asset Transfer Proxies', () => {
|
||||
|
||||
it('should successfully transfer tokens that do not return a value', async () => {
|
||||
// Construct ERC20 asset data
|
||||
const encodedAssetData = assetDataInterface
|
||||
.ERC20Token(noReturnErc20Token.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const encodedAssetData = encodeERC20AssetData(noReturnErc20Token.address);
|
||||
// Perform a transfer from fromAddress to toAddress
|
||||
const initialFromBalance = await noReturnErc20Token.balanceOf(fromAddress).callAsync();
|
||||
const initialToBalance = await noReturnErc20Token.balanceOf(toAddress).callAsync();
|
||||
@ -275,9 +276,7 @@ describe('Asset Transfer Proxies', () => {
|
||||
it('should successfully transfer tokens and ignore extra assetData', async () => {
|
||||
// Construct ERC20 asset data
|
||||
const extraData = '0102030405060708';
|
||||
const encodedAssetData = `${assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData()}${extraData}`;
|
||||
const encodedAssetData = `${encodeERC20AssetData(erc20TokenA.address)}${extraData}`;
|
||||
// Perform a transfer from fromAddress to toAddress
|
||||
const erc20Balances = await erc20Wrapper.getBalancesAsync();
|
||||
const amount = new BigNumber(10);
|
||||
@ -304,9 +303,7 @@ describe('Asset Transfer Proxies', () => {
|
||||
|
||||
it('should do nothing if transferring 0 amount of a token', async () => {
|
||||
// Construct ERC20 asset data
|
||||
const encodedAssetData = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const encodedAssetData = encodeERC20AssetData(erc20TokenA.address);
|
||||
// Perform a transfer from fromAddress to toAddress
|
||||
const erc20Balances = await erc20Wrapper.getBalancesAsync();
|
||||
const amount = new BigNumber(0);
|
||||
@ -333,9 +330,7 @@ describe('Asset Transfer Proxies', () => {
|
||||
|
||||
it('should revert if allowances are too low', async () => {
|
||||
// Construct ERC20 asset data
|
||||
const encodedAssetData = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const encodedAssetData = encodeERC20AssetData(erc20TokenA.address);
|
||||
// Create allowance less than transfer amount. Set allowance on proxy.
|
||||
const allowance = new BigNumber(0);
|
||||
const amount = new BigNumber(10);
|
||||
@ -361,9 +356,7 @@ describe('Asset Transfer Proxies', () => {
|
||||
|
||||
it('should revert if allowances are too low and token does not return a value', async () => {
|
||||
// Construct ERC20 asset data
|
||||
const encodedAssetData = assetDataInterface
|
||||
.ERC20Token(noReturnErc20Token.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const encodedAssetData = encodeERC20AssetData(noReturnErc20Token.address);
|
||||
// Create allowance less than transfer amount. Set allowance on proxy.
|
||||
const allowance = new BigNumber(0);
|
||||
const amount = new BigNumber(10);
|
||||
@ -392,9 +385,7 @@ describe('Asset Transfer Proxies', () => {
|
||||
|
||||
it('should revert if caller is not authorized', async () => {
|
||||
// Construct ERC20 asset data
|
||||
const encodedAssetData = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const encodedAssetData = encodeERC20AssetData(erc20TokenA.address);
|
||||
// Perform a transfer from fromAddress to toAddress
|
||||
const amount = new BigNumber(10);
|
||||
const data = assetProxyInterface
|
||||
@ -415,9 +406,7 @@ describe('Asset Transfer Proxies', () => {
|
||||
|
||||
it('should revert if token returns more than 32 bytes', async () => {
|
||||
// Construct ERC20 asset data
|
||||
const encodedAssetData = assetDataInterface
|
||||
.ERC20Token(multipleReturnErc20Token.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const encodedAssetData = encodeERC20AssetData(multipleReturnErc20Token.address);
|
||||
const amount = new BigNumber(10);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(encodedAssetData, fromAddress, toAddress, amount)
|
||||
@ -461,9 +450,7 @@ describe('Asset Transfer Proxies', () => {
|
||||
describe('transferFrom', () => {
|
||||
it('should successfully transfer tokens', async () => {
|
||||
// Construct ERC721 asset data
|
||||
const encodedAssetData = assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId)
|
||||
.getABIEncodedTransactionData();
|
||||
const encodedAssetData = encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
|
||||
// Verify pre-condition
|
||||
const ownerFromAsset = await erc721TokenA.ownerOf(erc721AFromTokenId).callAsync();
|
||||
expect(ownerFromAsset).to.be.equal(fromAddress);
|
||||
@ -488,9 +475,10 @@ describe('Asset Transfer Proxies', () => {
|
||||
it('should successfully transfer tokens and ignore extra assetData', async () => {
|
||||
// Construct ERC721 asset data
|
||||
const extraData = '0102030405060708';
|
||||
const encodedAssetData = `${assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId)
|
||||
.getABIEncodedTransactionData()}${extraData}`;
|
||||
const encodedAssetData = `${encodeERC721AssetData(
|
||||
erc721TokenA.address,
|
||||
erc721AFromTokenId,
|
||||
)}${extraData}`;
|
||||
// Verify pre-condition
|
||||
const ownerFromAsset = await erc721TokenA.ownerOf(erc721AFromTokenId).callAsync();
|
||||
expect(ownerFromAsset).to.be.equal(fromAddress);
|
||||
@ -514,9 +502,7 @@ describe('Asset Transfer Proxies', () => {
|
||||
|
||||
it('should not call onERC721Received when transferring to a smart contract', async () => {
|
||||
// Construct ERC721 asset data
|
||||
const encodedAssetData = assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId)
|
||||
.getABIEncodedTransactionData();
|
||||
const encodedAssetData = encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
|
||||
// Verify pre-condition
|
||||
const ownerFromAsset = await erc721TokenA.ownerOf(erc721AFromTokenId).callAsync();
|
||||
expect(ownerFromAsset).to.be.equal(fromAddress);
|
||||
@ -543,9 +529,7 @@ describe('Asset Transfer Proxies', () => {
|
||||
|
||||
it('should revert if transferring 0 amount of a token', async () => {
|
||||
// Construct ERC721 asset data
|
||||
const encodedAssetData = assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId)
|
||||
.getABIEncodedTransactionData();
|
||||
const encodedAssetData = encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
|
||||
// Verify pre-condition
|
||||
const ownerFromAsset = await erc721TokenA.ownerOf(erc721AFromTokenId).callAsync();
|
||||
expect(ownerFromAsset).to.be.equal(fromAddress);
|
||||
@ -568,9 +552,7 @@ describe('Asset Transfer Proxies', () => {
|
||||
|
||||
it('should revert if transferring > 1 amount of a token', async () => {
|
||||
// Construct ERC721 asset data
|
||||
const encodedAssetData = assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId)
|
||||
.getABIEncodedTransactionData();
|
||||
const encodedAssetData = encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
|
||||
// Verify pre-condition
|
||||
const ownerFromAsset = await erc721TokenA.ownerOf(erc721AFromTokenId).callAsync();
|
||||
expect(ownerFromAsset).to.be.equal(fromAddress);
|
||||
@ -593,9 +575,7 @@ describe('Asset Transfer Proxies', () => {
|
||||
|
||||
it('should revert if allowances are too low', async () => {
|
||||
// Construct ERC721 asset data
|
||||
const encodedAssetData = assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId)
|
||||
.getABIEncodedTransactionData();
|
||||
const encodedAssetData = encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
|
||||
// Verify pre-condition
|
||||
const ownerFromAsset = await erc721TokenA.ownerOf(erc721AFromTokenId).callAsync();
|
||||
expect(ownerFromAsset).to.be.equal(fromAddress);
|
||||
@ -626,9 +606,7 @@ describe('Asset Transfer Proxies', () => {
|
||||
|
||||
it('should revert if caller is not authorized', async () => {
|
||||
// Construct ERC721 asset data
|
||||
const encodedAssetData = assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId)
|
||||
.getABIEncodedTransactionData();
|
||||
const encodedAssetData = encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
|
||||
// Verify pre-condition
|
||||
const ownerFromAsset = await erc721TokenA.ownerOf(erc721AFromTokenId).callAsync();
|
||||
expect(ownerFromAsset).to.be.equal(fromAddress);
|
||||
@ -672,14 +650,10 @@ describe('Asset Transfer Proxies', () => {
|
||||
it('should transfer a single ERC20 token', async () => {
|
||||
const inputAmount = new BigNumber(1);
|
||||
const erc20Amount = new BigNumber(10);
|
||||
const erc20AssetData = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc20AssetData = encodeERC20AssetData(erc20TokenA.address);
|
||||
const amounts = [erc20Amount];
|
||||
const nestedAssetData = [erc20AssetData];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, inputAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -704,14 +678,10 @@ describe('Asset Transfer Proxies', () => {
|
||||
it('should dispatch an ERC20 transfer when input amount is 0', async () => {
|
||||
const inputAmount = constants.ZERO_AMOUNT;
|
||||
const erc20Amount = new BigNumber(10);
|
||||
const erc20AssetData = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc20AssetData = encodeERC20AssetData(erc20TokenA.address);
|
||||
const amounts = [erc20Amount];
|
||||
const nestedAssetData = [erc20AssetData];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, inputAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -736,17 +706,11 @@ describe('Asset Transfer Proxies', () => {
|
||||
const inputAmount = new BigNumber(1);
|
||||
const erc20Amount1 = new BigNumber(10);
|
||||
const erc20Amount2 = new BigNumber(20);
|
||||
const erc20AssetData1 = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc20AssetData2 = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc20AssetData1 = encodeERC20AssetData(erc20TokenA.address);
|
||||
const erc20AssetData2 = encodeERC20AssetData(erc20TokenA.address);
|
||||
const amounts = [erc20Amount1, erc20Amount2];
|
||||
const nestedAssetData = [erc20AssetData1, erc20AssetData2];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, inputAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -772,17 +736,11 @@ describe('Asset Transfer Proxies', () => {
|
||||
const inputAmount = new BigNumber(1);
|
||||
const erc20Amount1 = new BigNumber(10);
|
||||
const erc20Amount2 = new BigNumber(20);
|
||||
const erc20AssetData1 = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc20AssetData2 = assetDataInterface
|
||||
.ERC20Token(erc20TokenB.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc20AssetData1 = encodeERC20AssetData(erc20TokenA.address);
|
||||
const erc20AssetData2 = encodeERC20AssetData(erc20TokenB.address);
|
||||
const amounts = [erc20Amount1, erc20Amount2];
|
||||
const nestedAssetData = [erc20AssetData1, erc20AssetData2];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, inputAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -814,14 +772,10 @@ describe('Asset Transfer Proxies', () => {
|
||||
it('should transfer a single ERC721 token', async () => {
|
||||
const inputAmount = new BigNumber(1);
|
||||
const erc721Amount = new BigNumber(1);
|
||||
const erc721AssetData = assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc721AssetData = encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
|
||||
const amounts = [erc721Amount];
|
||||
const nestedAssetData = [erc721AssetData];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, inputAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -841,19 +795,13 @@ describe('Asset Transfer Proxies', () => {
|
||||
it('should successfully transfer multiple of the same ERC721 token', async () => {
|
||||
const erc721Balances = await erc721Wrapper.getBalancesAsync();
|
||||
const erc721AFromTokenId2 = erc721Balances[fromAddress][erc721TokenA.address][1];
|
||||
const erc721AssetData1 = assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc721AssetData2 = assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId2)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc721AssetData1 = encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
|
||||
const erc721AssetData2 = encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId2);
|
||||
const inputAmount = new BigNumber(1);
|
||||
const erc721Amount = new BigNumber(1);
|
||||
const amounts = [erc721Amount, erc721Amount];
|
||||
const nestedAssetData = [erc721AssetData1, erc721AssetData2];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, inputAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -876,19 +824,13 @@ describe('Asset Transfer Proxies', () => {
|
||||
expect(newOwnerFromAsset2).to.be.equal(toAddress);
|
||||
});
|
||||
it('should successfully transfer multiple different ERC721 tokens', async () => {
|
||||
const erc721AssetData1 = assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc721AssetData2 = assetDataInterface
|
||||
.ERC721Token(erc721TokenB.address, erc721BFromTokenId)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc721AssetData1 = encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
|
||||
const erc721AssetData2 = encodeERC721AssetData(erc721TokenB.address, erc721BFromTokenId);
|
||||
const inputAmount = new BigNumber(1);
|
||||
const erc721Amount = new BigNumber(1);
|
||||
const amounts = [erc721Amount, erc721Amount];
|
||||
const nestedAssetData = [erc721AssetData1, erc721AssetData2];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, inputAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -926,16 +868,17 @@ describe('Asset Transfer Proxies', () => {
|
||||
];
|
||||
await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedInitialBalances);
|
||||
// encode erc1155 asset data
|
||||
const erc1155AssetData = assetDataInterface
|
||||
.ERC1155Assets(erc1155Contract.address, tokensToTransfer, valuesToTransfer, receiverCallbackData)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc1155AssetData = encodeERC1155AssetData(
|
||||
erc1155Contract.address,
|
||||
tokensToTransfer,
|
||||
valuesToTransfer,
|
||||
receiverCallbackData,
|
||||
);
|
||||
// encode multi-asset data
|
||||
const multiAssetAmount = new BigNumber(5);
|
||||
const amounts = [valueMultiplier];
|
||||
const nestedAssetData = [erc1155AssetData];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, multiAssetAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -978,16 +921,17 @@ describe('Asset Transfer Proxies', () => {
|
||||
];
|
||||
await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedInitialBalances);
|
||||
// encode erc1155 asset data
|
||||
const erc1155AssetData = assetDataInterface
|
||||
.ERC1155Assets(erc1155Contract.address, tokensToTransfer, valuesToTransfer, receiverCallbackData)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc1155AssetData = encodeERC1155AssetData(
|
||||
erc1155Contract.address,
|
||||
tokensToTransfer,
|
||||
valuesToTransfer,
|
||||
receiverCallbackData,
|
||||
);
|
||||
// encode multi-asset data
|
||||
const multiAssetAmount = new BigNumber(5);
|
||||
const amounts = [valueMultiplier];
|
||||
const nestedAssetData = [erc1155AssetData];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, multiAssetAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -1038,16 +982,17 @@ describe('Asset Transfer Proxies', () => {
|
||||
];
|
||||
await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedInitialBalances);
|
||||
// encode erc1155 asset data
|
||||
const erc1155AssetData = assetDataInterface
|
||||
.ERC1155Assets(erc1155Contract.address, tokensToTransfer, valuesToTransfer, receiverCallbackData)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc1155AssetData = encodeERC1155AssetData(
|
||||
erc1155Contract.address,
|
||||
tokensToTransfer,
|
||||
valuesToTransfer,
|
||||
receiverCallbackData,
|
||||
);
|
||||
// encode multi-asset data
|
||||
const multiAssetAmount = new BigNumber(1);
|
||||
const amounts = [valueMultiplier];
|
||||
const nestedAssetData = [erc1155AssetData];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, multiAssetAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -1092,19 +1037,23 @@ describe('Asset Transfer Proxies', () => {
|
||||
await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedInitialBalances);
|
||||
await erc1155Wrapper2.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedInitialBalances);
|
||||
// encode erc1155 asset data
|
||||
const erc1155AssetData1 = assetDataInterface
|
||||
.ERC1155Assets(erc1155Contract.address, tokensToTransfer, valuesToTransfer, receiverCallbackData)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc1155AssetData2 = assetDataInterface
|
||||
.ERC1155Assets(erc1155Contract2.address, tokensToTransfer, valuesToTransfer, receiverCallbackData)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc1155AssetData1 = encodeERC1155AssetData(
|
||||
erc1155Contract.address,
|
||||
tokensToTransfer,
|
||||
valuesToTransfer,
|
||||
receiverCallbackData,
|
||||
);
|
||||
const erc1155AssetData2 = encodeERC1155AssetData(
|
||||
erc1155Contract2.address,
|
||||
tokensToTransfer,
|
||||
valuesToTransfer,
|
||||
receiverCallbackData,
|
||||
);
|
||||
// encode multi-asset data
|
||||
const multiAssetAmount = new BigNumber(5);
|
||||
const amounts = [valueMultiplier, valueMultiplier];
|
||||
const nestedAssetData = [erc1155AssetData1, erc1155AssetData2];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, multiAssetAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -1132,31 +1081,23 @@ describe('Asset Transfer Proxies', () => {
|
||||
// setup test parameters
|
||||
const inputAmount = new BigNumber(1);
|
||||
const erc20Amount = new BigNumber(10);
|
||||
const erc20AssetData = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc20AssetData = encodeERC20AssetData(erc20TokenA.address);
|
||||
const erc721Amount = new BigNumber(1);
|
||||
const erc721AssetData = assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc721AssetData = encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
|
||||
const erc1155TokenHolders = [fromAddress, toAddress];
|
||||
const erc1155TokensToTransfer = erc1155FungibleTokens.slice(0, 1);
|
||||
const erc1155ValuesToTransfer = [new BigNumber(25)];
|
||||
const erc1155Amount = new BigNumber(23);
|
||||
const erc1155ReceiverCallbackData = '0x0102030405';
|
||||
const erc1155AssetData = assetDataInterface
|
||||
.ERC1155Assets(
|
||||
erc1155Contract.address,
|
||||
erc1155TokensToTransfer,
|
||||
erc1155ValuesToTransfer,
|
||||
erc1155ReceiverCallbackData,
|
||||
)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc1155AssetData = encodeERC1155AssetData(
|
||||
erc1155Contract.address,
|
||||
erc1155TokensToTransfer,
|
||||
erc1155ValuesToTransfer,
|
||||
erc1155ReceiverCallbackData,
|
||||
);
|
||||
const amounts = [erc20Amount, erc721Amount, erc1155Amount];
|
||||
const nestedAssetData = [erc20AssetData, erc721AssetData, erc1155AssetData];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, inputAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -1208,18 +1149,12 @@ describe('Asset Transfer Proxies', () => {
|
||||
it('should successfully transfer a combination of ERC20 and ERC721 tokens', async () => {
|
||||
const inputAmount = new BigNumber(1);
|
||||
const erc20Amount = new BigNumber(10);
|
||||
const erc20AssetData = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc20AssetData = encodeERC20AssetData(erc20TokenA.address);
|
||||
const erc721Amount = new BigNumber(1);
|
||||
const erc721AssetData = assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc721AssetData = encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
|
||||
const amounts = [erc20Amount, erc721Amount];
|
||||
const nestedAssetData = [erc20AssetData, erc721AssetData];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, inputAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -1249,19 +1184,13 @@ describe('Asset Transfer Proxies', () => {
|
||||
it.skip('should successfully transfer tokens and ignore extra assetData', async () => {
|
||||
const inputAmount = new BigNumber(1);
|
||||
const erc20Amount = new BigNumber(10);
|
||||
const erc20AssetData = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc20AssetData = encodeERC20AssetData(erc20TokenA.address);
|
||||
const erc721Amount = new BigNumber(1);
|
||||
const erc721AssetData = assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc721AssetData = encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
|
||||
const amounts = [erc20Amount, erc721Amount];
|
||||
const nestedAssetData = [erc20AssetData, erc721AssetData];
|
||||
const extraData = '0102030405060708090001020304050607080900010203040506070809000102';
|
||||
const assetData = `${assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData()}${extraData}`;
|
||||
const assetData = `${encodeMultiAssetData(amounts, nestedAssetData)}${extraData}`;
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, inputAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -1291,17 +1220,11 @@ describe('Asset Transfer Proxies', () => {
|
||||
const inputAmount = new BigNumber(100);
|
||||
const erc20Amount1 = new BigNumber(10);
|
||||
const erc20Amount2 = new BigNumber(20);
|
||||
const erc20AssetData1 = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc20AssetData2 = assetDataInterface
|
||||
.ERC20Token(erc20TokenB.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc20AssetData1 = encodeERC20AssetData(erc20TokenA.address);
|
||||
const erc20AssetData2 = encodeERC20AssetData(erc20TokenB.address);
|
||||
const amounts = [erc20Amount1, erc20Amount2];
|
||||
const nestedAssetData = [erc20AssetData1, erc20AssetData2];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, inputAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -1334,28 +1257,16 @@ describe('Asset Transfer Proxies', () => {
|
||||
const inputAmount = new BigNumber(1);
|
||||
const erc20Amount1 = new BigNumber(10);
|
||||
const erc20Amount2 = new BigNumber(20);
|
||||
const erc20AssetData1 = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc20AssetData2 = assetDataInterface
|
||||
.ERC20Token(erc20TokenB.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc20AssetData1 = encodeERC20AssetData(erc20TokenA.address);
|
||||
const erc20AssetData2 = encodeERC20AssetData(erc20TokenB.address);
|
||||
const erc721Amount = new BigNumber(1);
|
||||
const erc721Balances = await erc721Wrapper.getBalancesAsync();
|
||||
const erc721AFromTokenId2 = erc721Balances[fromAddress][erc721TokenA.address][1];
|
||||
const erc721BFromTokenId2 = erc721Balances[fromAddress][erc721TokenB.address][1];
|
||||
const erc721AssetData1 = assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc721AssetData2 = assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId2)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc721AssetData3 = assetDataInterface
|
||||
.ERC721Token(erc721TokenB.address, erc721BFromTokenId)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc721AssetData4 = assetDataInterface
|
||||
.ERC721Token(erc721TokenB.address, erc721BFromTokenId2)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc721AssetData1 = encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
|
||||
const erc721AssetData2 = encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId2);
|
||||
const erc721AssetData3 = encodeERC721AssetData(erc721TokenB.address, erc721BFromTokenId);
|
||||
const erc721AssetData4 = encodeERC721AssetData(erc721TokenB.address, erc721BFromTokenId2);
|
||||
const amounts = [erc721Amount, erc20Amount1, erc721Amount, erc20Amount2, erc721Amount, erc721Amount];
|
||||
const nestedAssetData = [
|
||||
erc721AssetData1,
|
||||
@ -1365,9 +1276,7 @@ describe('Asset Transfer Proxies', () => {
|
||||
erc721AssetData3,
|
||||
erc721AssetData4,
|
||||
];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, inputAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -1416,19 +1325,13 @@ describe('Asset Transfer Proxies', () => {
|
||||
it('should revert if a single transfer fails', async () => {
|
||||
const inputAmount = new BigNumber(1);
|
||||
const erc20Amount = new BigNumber(10);
|
||||
const erc20AssetData = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc20AssetData = encodeERC20AssetData(erc20TokenA.address);
|
||||
// 2 is an invalid erc721 amount
|
||||
const erc721Amount = new BigNumber(2);
|
||||
const erc721AssetData = assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc721AssetData = encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
|
||||
const amounts = [erc20Amount, erc721Amount];
|
||||
const nestedAssetData = [erc20AssetData, erc721AssetData];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, inputAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -1444,20 +1347,14 @@ describe('Asset Transfer Proxies', () => {
|
||||
it('should revert if an AssetProxy is not registered', async () => {
|
||||
const inputAmount = new BigNumber(1);
|
||||
const erc20Amount = new BigNumber(10);
|
||||
const erc20AssetData = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc20AssetData = encodeERC20AssetData(erc20TokenA.address);
|
||||
const erc721Amount = new BigNumber(1);
|
||||
const erc721AssetData = assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc721AssetData = encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
|
||||
const invalidProxyId = '0x12345678';
|
||||
const invalidErc721AssetData = `${invalidProxyId}${erc721AssetData.slice(10)}`;
|
||||
const amounts = [erc20Amount, erc721Amount];
|
||||
const nestedAssetData = [erc20AssetData, invalidErc721AssetData];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, inputAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -1473,17 +1370,11 @@ describe('Asset Transfer Proxies', () => {
|
||||
it('should revert if the length of `amounts` does not match the length of `nestedAssetData`', async () => {
|
||||
const inputAmount = new BigNumber(1);
|
||||
const erc20Amount = new BigNumber(10);
|
||||
const erc20AssetData = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc721AssetData = assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc20AssetData = encodeERC20AssetData(erc20TokenA.address);
|
||||
const erc721AssetData = encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
|
||||
const amounts = [erc20Amount];
|
||||
const nestedAssetData = [erc20AssetData, erc721AssetData];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, inputAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -1499,14 +1390,10 @@ describe('Asset Transfer Proxies', () => {
|
||||
it('should revert if amounts multiplication results in an overflow', async () => {
|
||||
const inputAmount = new BigNumber(2).pow(128);
|
||||
const erc20Amount = new BigNumber(2).pow(128);
|
||||
const erc20AssetData = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc20AssetData = encodeERC20AssetData(erc20TokenA.address);
|
||||
const amounts = [erc20Amount];
|
||||
const nestedAssetData = [erc20AssetData];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, inputAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -1522,16 +1409,12 @@ describe('Asset Transfer Proxies', () => {
|
||||
it('should revert if an element of `nestedAssetData` is < 4 bytes long', async () => {
|
||||
const inputAmount = new BigNumber(1);
|
||||
const erc20Amount = new BigNumber(10);
|
||||
const erc20AssetData = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc20AssetData = encodeERC20AssetData(erc20TokenA.address);
|
||||
const erc721Amount = new BigNumber(1);
|
||||
const erc721AssetData = '0x123456';
|
||||
const amounts = [erc20Amount, erc721Amount];
|
||||
const nestedAssetData = [erc20AssetData, erc721AssetData];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, inputAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -1547,18 +1430,12 @@ describe('Asset Transfer Proxies', () => {
|
||||
it('should revert if caller is not authorized', async () => {
|
||||
const inputAmount = new BigNumber(1);
|
||||
const erc20Amount = new BigNumber(10);
|
||||
const erc20AssetData = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc20AssetData = encodeERC20AssetData(erc20TokenA.address);
|
||||
const erc721Amount = new BigNumber(1);
|
||||
const erc721AssetData = assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc721AssetData = encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
|
||||
const amounts = [erc20Amount, erc721Amount];
|
||||
const nestedAssetData = [erc20AssetData, erc721AssetData];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, inputAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -1574,18 +1451,12 @@ describe('Asset Transfer Proxies', () => {
|
||||
it('should revert if asset data overflows beyond the bounds of calldata', async () => {
|
||||
const inputAmount = new BigNumber(1);
|
||||
const erc20Amount = new BigNumber(10);
|
||||
const erc20AssetData = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc20AssetData = encodeERC20AssetData(erc20TokenA.address);
|
||||
const erc721Amount = new BigNumber(1);
|
||||
const erc721AssetData = assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc721AssetData = encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
|
||||
const amounts = [erc20Amount, erc721Amount];
|
||||
const nestedAssetData = [erc20AssetData, erc721AssetData];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, inputAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -1607,18 +1478,12 @@ describe('Asset Transfer Proxies', () => {
|
||||
it('should revert if asset data resolves to a location beyond the bounds of calldata', async () => {
|
||||
const inputAmount = new BigNumber(1);
|
||||
const erc20Amount = new BigNumber(10);
|
||||
const erc20AssetData = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc20AssetData = encodeERC20AssetData(erc20TokenA.address);
|
||||
const erc721Amount = new BigNumber(1);
|
||||
const erc721AssetData = assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc721AssetData = encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
|
||||
const amounts = [erc20Amount, erc721Amount];
|
||||
const nestedAssetData = [erc20AssetData, erc721AssetData];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const data = assetProxyInterface
|
||||
.transferFrom(assetData, fromAddress, toAddress, inputAmount)
|
||||
.getABIEncodedTransactionData();
|
||||
@ -1641,18 +1506,12 @@ describe('Asset Transfer Proxies', () => {
|
||||
// setup test parameters
|
||||
const inputAmount = new BigNumber(1);
|
||||
const erc20Amount = new BigNumber(10);
|
||||
const erc20AssetData = assetDataInterface
|
||||
.ERC20Token(erc20TokenA.address)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc20AssetData = encodeERC20AssetData(erc20TokenA.address);
|
||||
const erc721Amount = new BigNumber(1);
|
||||
const erc721AssetData = assetDataInterface
|
||||
.ERC721Token(erc721TokenA.address, erc721AFromTokenId)
|
||||
.getABIEncodedTransactionData();
|
||||
const erc721AssetData = encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
|
||||
const amounts = [erc20Amount, erc721Amount];
|
||||
const nestedAssetData = [erc20AssetData, erc721AssetData];
|
||||
const assetData = assetDataInterface
|
||||
.MultiAsset(amounts, nestedAssetData)
|
||||
.getABIEncodedTransactionData();
|
||||
const assetData = encodeMultiAssetData(amounts, nestedAssetData);
|
||||
const extraData = '01';
|
||||
const assetDataWithExtraData = `${assetData}${extraData}`;
|
||||
const badData = assetProxyInterface
|
||||
|
@ -9,7 +9,7 @@ export const hashUtils = {
|
||||
return hashBuffer;
|
||||
},
|
||||
getApprovalHashHex(transaction: SignedZeroExTransaction, verifyingContract: string, txOrigin: string): string {
|
||||
const hashHex = hexUtils.concat(hashUtils.getApprovalHashBuffer(transaction, verifyingContract, txOrigin));
|
||||
const hashHex = hexUtils.toHex(hashUtils.getApprovalHashBuffer(transaction, verifyingContract, txOrigin));
|
||||
return hashHex;
|
||||
},
|
||||
};
|
||||
|
@ -119,7 +119,7 @@ blockchainTests.resets('Coordinator integration tests', env => {
|
||||
order = await maker.signOrderAsync();
|
||||
data = exchangeDataEncoder.encodeOrdersToExchangeData(fnName, [order]);
|
||||
transaction = await taker.signTransactionAsync({ data });
|
||||
approval = await feeRecipient.signCoordinatorApprovalAsync(transaction, taker.address);
|
||||
approval = feeRecipient.signCoordinatorApproval(transaction, taker.address);
|
||||
});
|
||||
|
||||
it(`${fnName} should fill the order with a signed approval`, async () => {
|
||||
@ -253,7 +253,7 @@ blockchainTests.resets('Coordinator integration tests', env => {
|
||||
orders = [await maker.signOrderAsync(), await maker.signOrderAsync()];
|
||||
data = exchangeDataEncoder.encodeOrdersToExchangeData(fnName, orders);
|
||||
transaction = await taker.signTransactionAsync({ data });
|
||||
approval = await feeRecipient.signCoordinatorApprovalAsync(transaction, taker.address);
|
||||
approval = feeRecipient.signCoordinatorApproval(transaction, taker.address);
|
||||
});
|
||||
|
||||
it(`${fnName} should fill the orders with a signed approval`, async () => {
|
||||
|
@ -10,11 +10,11 @@ interface FeeRecipientConfig extends ActorConfig {
|
||||
|
||||
export interface FeeRecipientInterface {
|
||||
approvalFactory?: ApprovalFactory;
|
||||
signCoordinatorApprovalAsync: (
|
||||
signCoordinatorApproval: (
|
||||
transaction: SignedZeroExTransaction,
|
||||
txOrigin: string,
|
||||
signatureType?: SignatureType,
|
||||
) => Promise<SignedCoordinatorApproval>;
|
||||
) => SignedCoordinatorApproval;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -46,11 +46,11 @@ export function FeeRecipientMixin<TBase extends Constructor>(Base: TBase): TBase
|
||||
/**
|
||||
* Signs an coordinator transaction.
|
||||
*/
|
||||
public async signCoordinatorApprovalAsync(
|
||||
public signCoordinatorApproval(
|
||||
transaction: SignedZeroExTransaction,
|
||||
txOrigin: string,
|
||||
signatureType: SignatureType = SignatureType.EthSign,
|
||||
): Promise<SignedCoordinatorApproval> {
|
||||
): SignedCoordinatorApproval {
|
||||
if (this.approvalFactory === undefined) {
|
||||
throw new Error('No verifying contract provided in FeeRecipient constructor');
|
||||
}
|
||||
|
@ -200,7 +200,7 @@ tests('Exchange signature validation fuzz tests', env => {
|
||||
exchangeAddress: mangled.order!.exchangeAddress,
|
||||
chainId: mangled.order!.chainId,
|
||||
});
|
||||
mangled.hash = await orderHashUtils.getOrderHashHex(mangled.order);
|
||||
mangled.hash = orderHashUtils.getOrderHashHex(mangled.order);
|
||||
break;
|
||||
case 'RANDOM_TRANSACTION':
|
||||
mangled.transaction = randomTransaction({
|
||||
@ -398,7 +398,7 @@ tests('Exchange signature validation fuzz tests', env => {
|
||||
fields.validator || (signatureType === SignatureType.Validator ? walletContractAddress : undefined);
|
||||
const signerKey = fields.signerKey || privateKeys[signer];
|
||||
const order = fields.order || randomOrder({ makerAddress: signer });
|
||||
const hash = fields.hash || (await orderHashUtils.getOrderHashHex(order));
|
||||
const hash = fields.hash || orderHashUtils.getOrderHashHex(order);
|
||||
const payload =
|
||||
fields.payload ||
|
||||
(STRICT_LENGTH_SIGNATURE_TYPES.includes(signatureType) ? constants.NULL_BYTES : randomPayload());
|
||||
|
Loading…
x
Reference in New Issue
Block a user