From 8f9d2a5f9a45200dc684dcfbc3fc4222add5f9a7 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 11 Nov 2015 10:12:13 +0100 Subject: [PATCH] change to erro handler middleware to log full error object and support express-validator --- test/api/v3/unit/middlewares/errorHandler.test.js | 1 + website/src/middlewares/api-v3/errorHandler.js | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/test/api/v3/unit/middlewares/errorHandler.test.js b/test/api/v3/unit/middlewares/errorHandler.test.js index 7df6ed8713..912dd75d1c 100644 --- a/test/api/v3/unit/middlewares/errorHandler.test.js +++ b/test/api/v3/unit/middlewares/errorHandler.test.js @@ -92,6 +92,7 @@ describe('errorHandler', () => { originalUrl: req.originalUrl, headers: req.headers, body: req.body, + fullError: error, }); }); diff --git a/website/src/middlewares/api-v3/errorHandler.js b/website/src/middlewares/api-v3/errorHandler.js index 20c7dae30b..5bf90f6969 100644 --- a/website/src/middlewares/api-v3/errorHandler.js +++ b/website/src/middlewares/api-v3/errorHandler.js @@ -3,6 +3,7 @@ import logger from '../../libs/api-v3/logger'; import { CustomError, + BadRequest, InternalServerError, } from '../../libs/api-v3/errors'; @@ -16,6 +17,7 @@ export default function errorHandler (err, req, res, next) { originalUrl: req.originalUrl, headers: req.headers, body: req.body, + fullError: err, }); // In case of a CustomError class, use it's data @@ -31,6 +33,12 @@ export default function errorHandler (err, req, res, next) { responseErr.message = err.message; } + // Handle errors by express-validator + if (Array.isArray(err) && err[0].param && err[0].msg) { + responseErr = new BadRequest('Invalid request parameters.'); + responseErr.errors = err; + } + if (!responseErr || responseErr.httpCode >= 500) { // Try to identify the error... // ... @@ -40,6 +48,7 @@ export default function errorHandler (err, req, res, next) { responseErr = new InternalServerError(); } + // TODO unless status >= 500 return data attached to errors return res .status(responseErr.httpCode) .json({