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:
parent
cda07b2009
commit
6a5ea251a5
2 changed files with 76 additions and 8 deletions
|
@ -1,6 +1,7 @@
|
||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const debug = require('@tryghost/debug')('error-handler');
|
const debug = require('@tryghost/debug')('error-handler');
|
||||||
const errors = require('@tryghost/errors');
|
const errors = require('@tryghost/errors');
|
||||||
|
const {prepareStackForUser} = require('@tryghost/errors').utils;
|
||||||
const tpl = require('@tryghost/tpl');
|
const tpl = require('@tryghost/tpl');
|
||||||
|
|
||||||
const messages = {
|
const messages = {
|
||||||
|
@ -77,7 +78,7 @@ module.exports.prepareError = (err, req, res, next) => {
|
||||||
// alternative for res.status();
|
// alternative for res.status();
|
||||||
res.statusCode = err.statusCode;
|
res.statusCode = err.statusCode;
|
||||||
|
|
||||||
err = err.prepareErrorForUser();
|
prepareStackForUser(err);
|
||||||
|
|
||||||
// never cache errors
|
// never cache errors
|
||||||
res.set({
|
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 = {
|
const userError = {
|
||||||
message: err.message,
|
message: err.message,
|
||||||
context: err.context
|
context: err.context
|
||||||
};
|
};
|
||||||
|
|
||||||
const docName = _.get(res, 'frameOptions.docName');
|
const docName = _.get(req, 'frameOptions.docName');
|
||||||
const method = _.get(res, 'frameOptions.method');
|
const method = _.get(req, 'frameOptions.method');
|
||||||
|
|
||||||
if (docName && method) {
|
if (docName && method) {
|
||||||
let action;
|
let action;
|
||||||
|
|
|
@ -1,10 +1,77 @@
|
||||||
// Switch these lines once there are useful utils
|
// Switch these lines once there are useful utils
|
||||||
// const testUtils = require('./utils');
|
// const testUtils = require('./utils');
|
||||||
require('./utils');
|
require('./utils');
|
||||||
|
const {InternalServerError} = require('@tryghost/errors');
|
||||||
|
const {prepareError, handleJSONResponse, handleJSONResponseV2, handleHTMLResponse} = require('../lib/mw-error-handler');
|
||||||
|
|
||||||
describe('Hello world', function () {
|
describe('Prepare Error', function () {
|
||||||
it('Runs a test', function () {
|
it('Correctly prepares a normal error', function (done) {
|
||||||
// TODO: Write me!
|
prepareError(new Error('test!'), {}, {
|
||||||
'hello'.should.eql('hello');
|
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);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Reference in a new issue