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';
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);

View File

@@ -325,6 +325,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) {
@@ -337,13 +340,9 @@ 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 });