fixing enableExpressErrorHandler logic (#6423)

* fixing enableExpressErrorHandler logic

* Fix tests

Co-authored-by: n.andryukhin <n.andryukhin@mediasoft.team>
Co-authored-by: Diamond Lewis <findlewis@gmail.com>
This commit is contained in:
Nikolay Andryukhin
2020-03-23 09:49:12 +04:00
committed by GitHub
parent 927676b34e
commit c178acd347
2 changed files with 7 additions and 17 deletions

View File

@@ -9,8 +9,6 @@ describe('Enable express error handler', () => {
const masterKey = 'anOtherTestMasterKey'; const masterKey = 'anOtherTestMasterKey';
let server; let server;
let lastError;
const parseServer = ParseServer.ParseServer( const parseServer = ParseServer.ParseServer(
Object.assign({}, defaultConfiguration, { Object.assign({}, defaultConfiguration, {
appId: appId, appId: appId,
@@ -25,8 +23,8 @@ describe('Enable express error handler', () => {
server = app.listen(12667); server = app.listen(12667);
app.use(function(err, req, res, next) { app.use(function(err, req, res, next) {
next; expect(err.message).toBe('Object not found.');
lastError = err; next(err);
}); });
request({ request({
@@ -43,15 +41,8 @@ describe('Enable express error handler', () => {
fail('Should throw error'); fail('Should throw error');
}) })
.catch(response => { .catch(response => {
const reqError = response.data; expect(response).toBeDefined();
expect(reqError).toBeDefined(); expect(response.status).toEqual(500);
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);
}) })
.then(() => { .then(() => {
server.close(done); server.close(done);

View File

@@ -325,6 +325,9 @@ export function allowMethodOverride(req, res, next) {
export function handleParseErrors(err, req, res, next) { export function handleParseErrors(err, req, res, next) {
const log = (req.config && req.config.loggerController) || defaultLogger; const log = (req.config && req.config.loggerController) || defaultLogger;
if (err instanceof Parse.Error) { if (err instanceof Parse.Error) {
if (req.config && req.config.enableExpressErrorHandler) {
return next(err);
}
let httpStatus; let httpStatus;
// TODO: fill out this mapping // TODO: fill out this mapping
switch (err.code) { switch (err.code) {
@@ -337,13 +340,9 @@ export function handleParseErrors(err, req, res, next) {
default: default:
httpStatus = 400; httpStatus = 400;
} }
res.status(httpStatus); res.status(httpStatus);
res.json({ code: err.code, error: err.message }); res.json({ code: err.code, error: err.message });
log.error('Parse error: ', err); log.error('Parse error: ', err);
if (req.config && req.config.enableExpressErrorHandler) {
next(err);
}
} else if (err.status && err.message) { } else if (err.status && err.message) {
res.status(err.status); res.status(err.status);
res.json({ error: err.message }); res.json({ error: err.message });