From b0a8036ccd25735f2d24206ae82423656804de5a Mon Sep 17 00:00:00 2001 From: Vincent Germain Date: Thu, 11 May 2023 16:29:29 +0200 Subject: [PATCH] fix: unmarshal the value returned by the responseError interceptor --- .../src/scw/fetch/__tests__/build-fetcher.ts | 24 +++++++++++++++++++ .../clients/src/scw/fetch/build-fetcher.ts | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/clients/src/scw/fetch/__tests__/build-fetcher.ts b/packages/clients/src/scw/fetch/__tests__/build-fetcher.ts index e4b42c3f8..477dab26c 100644 --- a/packages/clients/src/scw/fetch/__tests__/build-fetcher.ts +++ b/packages/clients/src/scw/fetch/__tests__/build-fetcher.ts @@ -159,6 +159,30 @@ describe(`buildFetcher (mock)`, () => { ).resolves.toBe(42) }) + it('gets the unmarshalled value of what responseError returns', () => { + mockedFetch.mockRejectedValue(new TypeError('')) + + return expect( + buildFetcher( + { + ...DEFAULT_SETTINGS, + interceptors: [ + { + responseError: () => Promise.resolve(42), + }, + ], + }, + global.fetch, + )( + { + method: 'GET', + path: '/will-trigger-an-error', + }, + data => `${typeof data === 'number' ? data : ''}-dummy-output`, + ), + ).resolves.toBe('42-dummy-output') + }) + it('gets modified request in response error', () => { mockedFetch.mockRejectedValue(new TypeError('')) diff --git a/packages/clients/src/scw/fetch/build-fetcher.ts b/packages/clients/src/scw/fetch/build-fetcher.ts index e2db67698..e7555ca1c 100644 --- a/packages/clients/src/scw/fetch/build-fetcher.ts +++ b/packages/clients/src/scw/fetch/build-fetcher.ts @@ -112,7 +112,7 @@ export const buildFetcher = (settings: Settings, httpClient: typeof fetch) => { const resErrorInterceptors = prepareResponseErrors() const handledError = (await resErrorInterceptors(finalRequest, err)) as T - return handledError + return unwrapper(handledError) } } }