aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorLeonid Logvinov <logvinov.leon@gmail.com>2017-10-04 19:21:39 +0800
committerLeonid Logvinov <logvinov.leon@gmail.com>2017-10-04 19:31:09 +0800
commit8b7caef0db337a5f1b9bf41ee5f8a9157eda4d1d (patch)
tree898990b27b3b50797ebac7b439e0edf353fd26e2 /test
parent836d9be7fee9986c8ffa380633d873ba557511f4 (diff)
downloaddexon-sol-tools-8b7caef0db337a5f1b9bf41ee5f8a9157eda4d1d.tar
dexon-sol-tools-8b7caef0db337a5f1b9bf41ee5f8a9157eda4d1d.tar.gz
dexon-sol-tools-8b7caef0db337a5f1b9bf41ee5f8a9157eda4d1d.tar.bz2
dexon-sol-tools-8b7caef0db337a5f1b9bf41ee5f8a9157eda4d1d.tar.lz
dexon-sol-tools-8b7caef0db337a5f1b9bf41ee5f8a9157eda4d1d.tar.xz
dexon-sol-tools-8b7caef0db337a5f1b9bf41ee5f8a9157eda4d1d.tar.zst
dexon-sol-tools-8b7caef0db337a5f1b9bf41ee5f8a9157eda4d1d.zip
Fix an issue when validation failed, but contract call will succeed
Diffstat (limited to 'test')
-rw-r--r--test/order_validation_test.ts32
1 files changed, 32 insertions, 0 deletions
diff --git a/test/order_validation_test.ts b/test/order_validation_test.ts
index f625433eb..9e6817c8b 100644
--- a/test/order_validation_test.ts
+++ b/test/order_validation_test.ts
@@ -356,5 +356,37 @@ describe('OrderValidation', () => {
)).to.be.rejectedWith(ExchangeContractErrs.InsufficientTakerAllowance);
});
});
+ describe('should not throw if user doesn\'t have sufficient ZRX to pay the fees, but will after a transfer',
+ () => {
+ let signedOrder: SignedOrder;
+ let txHash: string;
+ it('should not throw if maker will have enough ZRX to pay fees after the transfer', async () => {
+ const makerFee = new BigNumber(2);
+ const takerFee = new BigNumber(2);
+ signedOrder = await fillScenarios.createFillableSignedOrderWithFeesAsync(
+ makerTokenAddress, zrxTokenAddress, makerFee, takerFee,
+ makerAddress, takerAddress, fillableAmount, feeRecipient,
+ );
+ txHash = await zeroEx.token.transferAsync(zrxTokenAddress, makerAddress, coinbase, makerFee);
+ await zeroEx.awaitTransactionMinedAsync(txHash);
+ await (orderValidationUtils as any).validateFillOrderMakerBalancesAllowancesThrowIfInvalidAsync(
+ signedOrder, fillTakerAmount, zrxTokenAddress,
+ );
+ });
+ it('should throw if maker will not have enough ZRX to pay fees even after the transfer', async () => {
+ const makerFee = fillableAmount.plus(1);
+ const takerFee = fillableAmount.plus(1);
+ signedOrder = await fillScenarios.createFillableSignedOrderWithFeesAsync(
+ makerTokenAddress, zrxTokenAddress, makerFee, takerFee,
+ makerAddress, takerAddress, fillableAmount, feeRecipient,
+ );
+ txHash = await zeroEx.token.transferAsync(zrxTokenAddress, makerAddress, coinbase, makerFee);
+ await zeroEx.awaitTransactionMinedAsync(txHash);
+ return expect(
+ (orderValidationUtils as any).validateFillOrderMakerBalancesAllowancesThrowIfInvalidAsync(
+ signedOrder, fillTakerAmount, zrxTokenAddress,
+ )).to.be.rejectedWith(ExchangeContractErrs.InsufficientMakerFeeBalance);
+ });
+ });
});
});