From 78683fe151f71cd68aa4436fcb82dbbba765101b Mon Sep 17 00:00:00 2001 From: DaoDev <88341957+DaoDev44@users.noreply.github.com> Date: Tue, 5 Oct 2021 14:12:10 -0600 Subject: [PATCH] add throw error when passed wrong chain to approvalNeeded --- .../src/swappers/zrx/approvalNeeded/approvalNeeded.test.ts | 6 ++++-- .../src/swappers/zrx/approvalNeeded/approvalNeeded.ts | 7 ++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/swapper/src/swappers/zrx/approvalNeeded/approvalNeeded.test.ts b/packages/swapper/src/swappers/zrx/approvalNeeded/approvalNeeded.test.ts index 1fc66df38..26335f832 100644 --- a/packages/swapper/src/swappers/zrx/approvalNeeded/approvalNeeded.test.ts +++ b/packages/swapper/src/swappers/zrx/approvalNeeded/approvalNeeded.test.ts @@ -58,13 +58,15 @@ describe('approvalNeeded', () => { expect(await approvalNeeded(args, input)).toEqual({ approvalNeeded: false }) }) - it('returns false if sellAsset chain is not ETH', async () => { + it('throws an error if sellAsset chain is not ETH', async () => { const input = { quote: { ...quoteInput, sellAsset: { ...sellAsset, chain: ChainTypes.Bitcoin } }, wallet } - expect(await approvalNeeded(args, input)).toEqual({ approvalNeeded: false }) + await expect(approvalNeeded(args, input)).rejects.toThrow( + 'ZrxSwapper:approvalNeeded only Ethereum chain type is supported' + ) }) it('returns false if allowanceOnChain is greater than quote.sellAmount', async () => { diff --git a/packages/swapper/src/swappers/zrx/approvalNeeded/approvalNeeded.ts b/packages/swapper/src/swappers/zrx/approvalNeeded/approvalNeeded.ts index 5a1953564..19a938b10 100644 --- a/packages/swapper/src/swappers/zrx/approvalNeeded/approvalNeeded.ts +++ b/packages/swapper/src/swappers/zrx/approvalNeeded/approvalNeeded.ts @@ -15,6 +15,7 @@ import { DEFAULT_SLIPPAGE } from '../utils/constants' +import { SwapError } from '../../../api' import { ZrxSwapperDeps } from '../ZrxSwapper' import { zrxService } from '../utils/zrxService' import { getERC20Allowance } from '../utils/helpers/helpers' @@ -26,10 +27,14 @@ export async function approvalNeeded( ): Promise { const { sellAsset } = quote - if (sellAsset.symbol === 'ETH' || sellAsset.chain !== ChainTypes.Ethereum) { + if (sellAsset.symbol === 'ETH') { return { approvalNeeded: false } } + if (sellAsset.chain !== ChainTypes.Ethereum) { + throw new SwapError('ZrxSwapper:approvalNeeded only Ethereum chain type is supported') + } + const adapter: ChainAdapter = adapterManager.byChain(sellAsset.chain) const receiveAddress = await adapter.getAddress({ wallet, path: DEFAULT_ETH_PATH })