Skip to content

Commit 3942aee

Browse files
committed
use built-in express error handler
1 parent b46b9b0 commit 3942aee

2 files changed

Lines changed: 48 additions & 53 deletions

File tree

lib/handlers/error.js

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,24 @@ var fs = require('fs');
55

66
function errorPageHandler(err, req, res, next) {
77
var ldp = req.app.locals.ldp;
8-
if (!ldp.noErrorPages) {
9-
var errorPage = ldp.errorPages +
10-
err.status.toString() + '.html';
11-
fs.readFile(errorPage, 'utf8', function(readErr, text) {
12-
if (readErr) {
13-
defaultErrorHandler(err, res);
14-
} else {
15-
res.status(err.status);
16-
res.send(text);
17-
}
18-
});
19-
} else {
20-
defaultErrorHandler(err, res);
8+
9+
// If noErrorPages is set,
10+
// then use built-in express default error handler
11+
if (ldp.noErrorPages) {
12+
return next(err);
2113
}
22-
}
2314

24-
function defaultErrorHandler(err, res) {
25-
res.status(err.status);
26-
res.send(err.message);
15+
// Check if error page exists
16+
var errorPage = ldp.errorPages + err.status.toString() + '.html';
17+
fs.readFile(errorPage, 'utf8', function(readErr, text) {
18+
if (readErr) {
19+
return next();
20+
}
21+
22+
res.status(err.status);
23+
res.header('Content-Type', 'text/html');
24+
res.send(text);
25+
});
2726
}
2827

2928
exports.handler = errorPageHandler;

test/errors.js

Lines changed: 32 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -17,51 +17,47 @@ var ldnode = require('../index');
1717
var ACL = require('../lib/acl').ACL;
1818
var ns = require('../lib/vocab/ns.js').ns;
1919

20-
describe('Error page tests', function() {
21-
var errorAddress = 'http://localhost:3457/test/';
20+
describe('Error pages', function() {
2221

23-
var errorLdp = ldnode.createServer({
22+
// LDP with error pages
23+
var errorLdp = ldnode({
2424
root: __dirname + '/resources',
2525
errorPages: __dirname + '/resources/errorPages'
2626
});
27-
errorLdp.listen(3457);
27+
var errorServer = supertest(errorLdp);
2828

29-
var errorServer = supertest(errorAddress);
30-
31-
// Instance of server with error pages flag set to false
32-
var noErrorAddress = 'http://localhost:3458/test/';
33-
34-
var noErrorLdp = ldnode.createServer({
29+
// LDP with no error pages
30+
var noErrorLdp = ldnode({
3531
root: __dirname + '/resources',
3632
noErrorPages: true
3733
});
38-
noErrorLdp.listen(3458);
39-
40-
var noErrorServer = supertest(errorAddress);
41-
34+
var noErrorServer = supertest(noErrorLdp);
35+
36+
function defaultErrorPage(filepath, expected) {
37+
var handler = function (res) {
38+
var errorFile = read(filepath);
39+
if (res.text === errorFile && !expected){
40+
console.log("Not default text");
41+
}
42+
};
43+
return handler;
44+
}
45+
46+
describe('noErrorPages', function () {
47+
var file404 = 'errorPages/404.html';
48+
it('Should return 404 express default page', function(done) {
49+
noErrorServer.get('/non-existent-file.html')
50+
.expect(defaultErrorPage(file404, false))
51+
.expect(404, done);
52+
});
53+
});
4254

43-
describe('Error page test', function() {
55+
describe('errorPages set', function() {
4456
var file404 = 'errorPages/404.html';
45-
function defaultErrorPage(filepath, expected) {
46-
var handler = function (res) {
47-
var errorFile = read(filepath);
48-
if (res.text === errorFile && !expected){
49-
console.log("Not default text");
50-
}
51-
};
52-
return handler;
53-
}
54-
it('Should return 404 custom page if flag set to true',
55-
function(done) {
56-
errorServer.get('non-existent-file.html')
57-
.expect(defaultErrorPage(file404, true))
58-
.expect(404, done);
59-
});
60-
it('Should return 404 default page if flag set to false',
61-
function(done) {
62-
noErrorServer.get('non-existent-file.html')
63-
.expect(defaultErrorPage(file404, false))
64-
.expect(404, done);
65-
});
57+
it('Should return 404 custom page if exists', function(done) {
58+
errorServer.get('/non-existent-file.html')
59+
.expect(defaultErrorPage(file404, true))
60+
.expect(404, done);
61+
});
6662
});
6763
});

0 commit comments

Comments
 (0)