From 0e750c4a1ee03f0b0d90add3ef17934699d8a9b9 Mon Sep 17 00:00:00 2001 From: "n.andryukhin" Date: Wed, 19 Feb 2020 18:25:24 +0400 Subject: [PATCH 1/2] fixing enableExpressErrorHandler logic --- src/middlewares.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/middlewares.js b/src/middlewares.js index 75923e713f..a4a68d8807 100644 --- a/src/middlewares.js +++ b/src/middlewares.js @@ -321,6 +321,11 @@ export function allowMethodOverride(req, res, next) { export function handleParseErrors(err, req, res, next) { const log = (req.config && req.config.loggerController) || defaultLogger; if (err instanceof Parse.Error) { + + if (req.config && req.config.enableExpressErrorHandler) { + return next(err); + } + let httpStatus; // TODO: fill out this mapping switch (err.code) { @@ -333,13 +338,10 @@ export function handleParseErrors(err, req, res, next) { default: httpStatus = 400; } - res.status(httpStatus); res.json({ code: err.code, error: err.message }); log.error('Parse error: ', err); - if (req.config && req.config.enableExpressErrorHandler) { - next(err); - } + } else if (err.status && err.message) { res.status(err.status); res.json({ error: err.message }); From ed4a2505ab73f4d6e8b31a2734be93189521dcf1 Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Sat, 21 Mar 2020 21:38:33 -0500 Subject: [PATCH 2/2] Fix tests --- spec/EnableExpressErrorHandler.spec.js | 17 ++++------------- src/middlewares.js | 3 --- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/spec/EnableExpressErrorHandler.spec.js b/spec/EnableExpressErrorHandler.spec.js index 48b6047092..b81a0229f7 100644 --- a/spec/EnableExpressErrorHandler.spec.js +++ b/spec/EnableExpressErrorHandler.spec.js @@ -9,8 +9,6 @@ describe('Enable express error handler', () => { const masterKey = 'anOtherTestMasterKey'; let server; - let lastError; - const parseServer = ParseServer.ParseServer( Object.assign({}, defaultConfiguration, { appId: appId, @@ -25,8 +23,8 @@ describe('Enable express error handler', () => { server = app.listen(12667); app.use(function(err, req, res, next) { - next; - lastError = err; + expect(err.message).toBe('Object not found.'); + next(err); }); request({ @@ -43,15 +41,8 @@ describe('Enable express error handler', () => { fail('Should throw error'); }) .catch(response => { - const reqError = response.data; - expect(reqError).toBeDefined(); - expect(lastError).toBeDefined(); - - expect(lastError.code).toEqual(101); - expect(lastError.message).toEqual('Object not found.'); - - expect(lastError.code).toEqual(reqError.code); - expect(lastError.message).toEqual(reqError.error); + expect(response).toBeDefined(); + expect(response.status).toEqual(500); }) .then(() => { server.close(done); diff --git a/src/middlewares.js b/src/middlewares.js index a4a68d8807..f8c52f29a2 100644 --- a/src/middlewares.js +++ b/src/middlewares.js @@ -321,11 +321,9 @@ export function allowMethodOverride(req, res, next) { export function handleParseErrors(err, req, res, next) { const log = (req.config && req.config.loggerController) || defaultLogger; if (err instanceof Parse.Error) { - if (req.config && req.config.enableExpressErrorHandler) { return next(err); } - let httpStatus; // TODO: fill out this mapping switch (err.code) { @@ -341,7 +339,6 @@ export function handleParseErrors(err, req, res, next) { res.status(httpStatus); res.json({ code: err.code, error: err.message }); log.error('Parse error: ', err); - } else if (err.status && err.message) { res.status(err.status); res.json({ error: err.message });