Add TEC integration tests

This commit is contained in:
Amir Bandeali
2019-02-21 16:57:03 -05:00
parent 2de9b862d8
commit 1de6bca12d
9 changed files with 496 additions and 89 deletions

View File

@@ -6,22 +6,26 @@ import { hashUtils, SignedTECApproval, signingUtils, TECSignatureType } from './
export class ApprovalFactory {
private readonly _privateKey: Buffer;
constructor(privateKey: Buffer) {
private readonly _verifyingContractAddress: string;
constructor(privateKey: Buffer, verifyingContractAddress: string) {
this._privateKey = privateKey;
this._verifyingContractAddress = verifyingContractAddress;
}
public newSignedApproval(
transaction: SignedZeroExTransaction,
approvalExpirationTimeSeconds: BigNumber,
signatureType: TECSignatureType = TECSignatureType.EthSign,
): SignedTECApproval {
const approvalHashBuff = hashUtils.getApprovalHashBuffer(transaction, approvalExpirationTimeSeconds);
const tecTransaction = {
...transaction,
verifyingContractAddress: this._verifyingContractAddress,
};
const approvalHashBuff = hashUtils.getApprovalHashBuffer(tecTransaction, approvalExpirationTimeSeconds);
const signatureBuff = signingUtils.signMessage(approvalHashBuff, this._privateKey, signatureType);
const transactionHash = hashUtils.getTransactionHashHex(transaction);
const signedApproval = {
transactionHash,
transaction: tecTransaction,
approvalExpirationTimeSeconds,
transactionSignature: transaction.signature,
approvalSignature: ethUtil.addHexPrefix(signatureBuff.toString('hex')),
signature: ethUtil.addHexPrefix(signatureBuff.toString('hex')),
};
return signedApproval;
}

View File

@@ -1,3 +1,5 @@
import { BigNumber } from '@0x/utils';
export const constants = {
TEC_DOMAIN_NAME: '0x Protocol Trade Execution Coordinator',
TEC_DOMAIN_VERSION: '1.0.0',
@@ -16,4 +18,5 @@ export const constants = {
CANCEL_ORDERS: 'cancelOrders',
BATCH_CANCEL_ORDERS: 'batchCancelOrders',
CANCEL_ORDERS_UP_TO: 'cancelOrdersUpTo',
TIME_BUFFER: new BigNumber(1000),
};

View File

@@ -27,7 +27,7 @@ export const exchangeDataEncoder = {
} else if (constants.MARKET_FILL_FN_NAMES.indexOf(fnName) !== -1) {
data = (exchangeInstance as any)[fnName].getABIEncodedTransactionData(
orders,
orders[0].takerAssetAmount,
orders.map(order => order.takerAssetAmount).reduce((prev, curr) => prev.plus(curr)),
orders.map(order => order.signature),
);
} else if (fnName === constants.MATCH_ORDERS) {

View File

@@ -1,13 +1,13 @@
import { SignedZeroExTransaction } from '@0x/types';
import { BigNumber } from '@0x/utils';
export interface TECApproval {
transactionHash: string;
transactionSignature: string;
transaction: SignedZeroExTransaction;
approvalExpirationTimeSeconds: BigNumber;
}
export interface SignedTECApproval extends TECApproval {
approvalSignature: string;
signature: string;
}
export enum TECSignatureType {