0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-17 23:44:39 -05:00

Fix usage of member function for errors

no issue
This commit is contained in:
Sam Lord 2021-12-14 12:23:17 +00:00
parent cda07b2009
commit 6a5ea251a5
2 changed files with 76 additions and 8 deletions

View file

@ -1,6 +1,7 @@
const _ = require('lodash');
const debug = require('@tryghost/debug')('error-handler');
const errors = require('@tryghost/errors');
const {prepareStackForUser} = require('@tryghost/errors').utils;
const tpl = require('@tryghost/tpl');
const messages = {
@ -77,7 +78,7 @@ module.exports.prepareError = (err, req, res, next) => {
// alternative for res.status();
res.statusCode = err.statusCode;
err = err.prepareErrorForUser();
prepareStackForUser(err);
// never cache errors
res.set({
@ -117,14 +118,14 @@ const jsonErrorRendererV2 = (err, req, res, next) => { // eslint-disable-line no
});
};
const prepareUserMessage = (err, res) => {
const prepareUserMessage = (err, req) => {
const userError = {
message: err.message,
context: err.context
};
const docName = _.get(res, 'frameOptions.docName');
const method = _.get(res, 'frameOptions.method');
const docName = _.get(req, 'frameOptions.docName');
const method = _.get(req, 'frameOptions.method');
if (docName && method) {
let action;

View file

@ -1,10 +1,77 @@
// Switch these lines once there are useful utils
// const testUtils = require('./utils');
require('./utils');
const {InternalServerError} = require('@tryghost/errors');
const {prepareError, handleJSONResponse, handleJSONResponseV2, handleHTMLResponse} = require('../lib/mw-error-handler');
describe('Hello world', function () {
it('Runs a test', function () {
// TODO: Write me!
'hello'.should.eql('hello');
describe('Prepare Error', function () {
it('Correctly prepares a normal error', function (done) {
prepareError(new Error('test!'), {}, {
set: () => {}
}, (err) => {
err.statusCode.should.eql(500);
err.name.should.eql('InternalServerError');
err.stack.should.startWith('Error: test!');
done();
});
});
});
describe('Error renderers', function () {
it('Renders JSON', function (done) {
const errorRenderer = handleJSONResponse({
errorHandler: () => {}
})[2];
errorRenderer(new Error('test!'), {}, {
json: (data) => {
data.errors.length.should.eql(1);
data.errors[0].message.should.eql('test!');
done();
}
}, () => {});
});
it('Renders JSON for v2', function (done) {
const errorRenderer = handleJSONResponseV2({
errorHandler: () => {}
})[2];
errorRenderer(new Error('test!'), {}, {
json: (data) => {
data.errors.length.should.eql(1);
data.errors[0].message.should.eql('test!');
done();
}
}, () => {});
});
it('Uses templates when required', function (done) {
const errorRenderer = handleJSONResponseV2({
errorHandler: () => {}
})[2];
errorRenderer(new InternalServerError({
message: 'test!'
}), {
frameOptions: {
docName: 'blog',
method: 'browse'
}
}, {
json: (data) => {
data.errors.length.should.eql(1);
data.errors[0].message.should.eql('Internal server error, cannot list blog.');
done();
}
}, () => {});
});
it('Exports the HTML renderer', function () {
const renderer = handleHTMLResponse({
errorHandler: () => {}
});
renderer.length.should.eql(2);
});
});