From a7fa61ab2fc323372b889cab228cec3580e864fb Mon Sep 17 00:00:00 2001 From: smessie Date: Tue, 27 Oct 2020 15:17:59 +0100 Subject: [PATCH] fix: Resolve duplicate error message and no trailing newline * fix: Resolves duplicate error message * test: Add trailing newline on error test --- src/ldp/http/BasicResponseWriter.ts | 4 +++- test/unit/ldp/http/BasicResponseWriter.test.ts | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/ldp/http/BasicResponseWriter.ts b/src/ldp/http/BasicResponseWriter.ts index 569343c07..f62e5b3f6 100644 --- a/src/ldp/http/BasicResponseWriter.ts +++ b/src/ldp/http/BasicResponseWriter.ts @@ -27,7 +27,9 @@ export class BasicResponseWriter extends ResponseWriter { } input.response.setHeader('content-type', 'text/plain'); input.response.writeHead(code); - input.response.end(`${input.result.name}: ${input.result.message}\n${input.result.stack}`); + input.response.end(typeof input.result.stack === 'string' ? + `${input.result.stack}\n` : + `${input.result.name}: ${input.result.message}\n`); } else { input.response.setHeader('location', input.result.identifier.path); if (input.result.body) { diff --git a/test/unit/ldp/http/BasicResponseWriter.test.ts b/test/unit/ldp/http/BasicResponseWriter.test.ts index 16a58d4f0..6796533a9 100644 --- a/test/unit/ldp/http/BasicResponseWriter.test.ts +++ b/test/unit/ldp/http/BasicResponseWriter.test.ts @@ -81,4 +81,19 @@ describe('A BasicResponseWriter', (): void => { expect(response._getStatusCode()).toBe(error.statusCode); expect(response._getData()).toMatch('UnsupportedHttpError: error'); }); + + it('responds with the error name and message when no stack trace is lazily generated.', async(): Promise => { + const error = new Error('error'); + error.stack = undefined; + await writer.handle({ response, result: error }); + expect(response._isEndCalled()).toBeTruthy(); + expect(response._getStatusCode()).toBe(500); + expect(response._getData()).toMatch('Error: error'); + }); + + it('ends its response with a newline if there is an error.', async(): Promise => { + await writer.handle({ response, result: new Error('error') }); + expect(response._isEndCalled()).toBeTruthy(); + expect(response._getData().endsWith('\n')).toBeTruthy(); + }); });