From 8fa721a8e1ce6be23daec8220a8928f80a9048b9 Mon Sep 17 00:00:00 2001 From: ushkarev Date: Mon, 12 Jun 2023 14:27:09 +0100 Subject: [PATCH] Have `sanitisedError` always return an Error instance (#199) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit … for the same reasons as explained in https://github.com/ministryofjustice/hmpps-template-typescript/pull/197 --- server/sanitisedError.test.ts | 14 ++++++++------ server/sanitisedError.ts | 14 +++++--------- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/server/sanitisedError.test.ts b/server/sanitisedError.test.ts index 0ad57fad..9305b48d 100644 --- a/server/sanitisedError.test.ts +++ b/server/sanitisedError.test.ts @@ -36,19 +36,21 @@ describe('sanitised error', () => { expect(sanitisedError(error)).toEqual(e) }) - it('it should return the error message ', () => { + it('it should return the error message', () => { const error = { message: 'error description', } as unknown as UnsanitisedError - expect(sanitisedError(error)).toEqual({ - message: 'error description', - }) + + expect(sanitisedError(error)).toBeInstanceOf(Error) + expect(sanitisedError(error)).toHaveProperty('message', 'error description') }) - it('it should return an empty object for an unknown error structure', () => { + it('it should return an empty Error instance for an unknown error structure', () => { const error = { property: 'unknown', } as unknown as UnsanitisedError - expect(sanitisedError(error)).toEqual({}) + + expect(sanitisedError(error)).toBeInstanceOf(Error) + expect(sanitisedError(error)).not.toHaveProperty('property') }) }) diff --git a/server/sanitisedError.ts b/server/sanitisedError.ts index d362727e..7172c1ab 100644 --- a/server/sanitisedError.ts +++ b/server/sanitisedError.ts @@ -1,6 +1,6 @@ import type { ResponseError } from 'superagent' -export interface SanitisedError { +export interface SanitisedError extends Error { text?: string status?: number headers?: unknown @@ -12,18 +12,14 @@ export interface SanitisedError { export type UnsanitisedError = ResponseError export default function sanitise(error: UnsanitisedError): SanitisedError { + const e = new Error() as SanitisedError + e.message = error.message + e.stack = error.stack if (error.response) { - const e = new Error(error.message) as SanitisedError e.text = error.response.text e.status = error.response.status e.headers = error.response.headers e.data = error.response.body - e.message = error.message - e.stack = error.stack - return e - } - return { - message: error.message, - stack: error.stack, } + return e }