express-errors-handler
Advanced tools
Comparing version 1.4.2 to 1.4.3
13
main.js
@@ -44,5 +44,16 @@ /*eslint no-unused-vars:0*/ | ||
function getCaptureError (client) { | ||
return function(err) { | ||
if (err.name === fetchres.ReadTimeoutError.name) { | ||
logger.error('event=dependencytimeout', err); | ||
} else { | ||
client.captureError.apply(client, arguments); | ||
} | ||
}; | ||
} | ||
if (process.env.NODE_ENV === 'production') { | ||
const client = new raven.Client(process.env.RAVEN_URL); | ||
module.exports = client; | ||
module.exports = Object.assign({}, client); | ||
module.exports.captureError = getCaptureError(client); | ||
module.exports.middleware = sendErrorProd; | ||
@@ -49,0 +60,0 @@ module.exports.upstreamErrorHandler = getUpstreamErrorHandler(sendErrorProd); |
{ | ||
"name": "express-errors-handler", | ||
"version": "1.4.2", | ||
"version": "1.4.3", | ||
"main": "main.js", | ||
@@ -5,0 +5,0 @@ "repository": { |
@@ -47,3 +47,3 @@ 'use strict'; | ||
expect(res.status).to.equal(500); | ||
expect(logger.error.calledWith('event=uncaughterror', error)) | ||
expect(logger.error.calledWith('event=uncaughterror', error)).to.be.true; | ||
done(); | ||
@@ -58,3 +58,3 @@ }); | ||
expect(res.status).to.equal(504); | ||
expect(logger.error.calledWith('event=dependencytimeout', readTimeoutError)) | ||
expect(logger.error.calledWith('event=dependencytimeout', readTimeoutError)).to.be.true; | ||
done(); | ||
@@ -69,3 +69,3 @@ }); | ||
expect(res.status).to.equal(513); | ||
expect(logger.error.calledWith('event=uncaughterror', badServerError)) | ||
expect(logger.error.calledWith('event=uncaughterror', badServerError)).to.be.true; | ||
done(); | ||
@@ -80,3 +80,3 @@ }); | ||
expect(res.status).to.equal(500); | ||
expect(logger.error.calledWith('event=uncaughterror', error)) | ||
expect(logger.error.calledWith('event=uncaughterror', error)).to.be.true; | ||
done(); | ||
@@ -83,0 +83,0 @@ }); |
@@ -11,3 +11,3 @@ 'use strict'; | ||
describe('express errors handler in dev', function () { | ||
describe('express errors handler in prod', function () { | ||
let app; | ||
@@ -21,5 +21,14 @@ let errorsHandler; | ||
}); | ||
const captureErrorSpy = sinon.spy(); | ||
const captureMessageSpy = sinon.spy(); | ||
before(function () { | ||
sinon.stub(raven.middleware, 'express', () => ravenSpy); | ||
sinon.stub(raven, 'Client', () => { | ||
return { | ||
captureError: captureErrorSpy, | ||
captureMessage: captureMessageSpy, | ||
patchGlobal: sinon.spy() | ||
} | ||
}); | ||
errorsHandler = require('../main'); | ||
@@ -57,3 +66,3 @@ app = express(); | ||
expect(res.status).to.equal(500); | ||
expect(logger.error.calledWith('event=uncaughterror', error)); | ||
expect(logger.error.calledWith('event=uncaughterror', error)).to.be.false; | ||
expect(ravenSpy.called).to.be.true; | ||
@@ -71,3 +80,3 @@ expect(ravenSpy.args[0].length).to.equal(4); | ||
expect(ravenSpy.called).to.be.false; | ||
expect(logger.error.calledWith('event=dependencytimeout', readTimeoutError)) | ||
expect(logger.error.calledWith('event=dependencytimeout', readTimeoutError)).to.be.true; | ||
done(); | ||
@@ -83,3 +92,3 @@ }); | ||
expect(ravenSpy.called).to.be.false; | ||
expect(logger.error.calledWith('event=uncaughterror', badServerError)) | ||
expect(logger.error.calledWith('event=uncaughterror', badServerError)).to.be.true; | ||
done(); | ||
@@ -96,3 +105,3 @@ }); | ||
expect(ravenSpy.args[0].length).to.equal(4); | ||
expect(logger.error.calledWith('event=uncaughterror', error)) | ||
expect(logger.error.calledWith('event=uncaughterror', error)).to.be.false; | ||
done(); | ||
@@ -102,2 +111,19 @@ }); | ||
it('can capture errors outside of express controllers', function () { | ||
errorsHandler.captureError(readTimeoutError); | ||
expect(logger.error.calledWith('event=dependencytimeout', readTimeoutError)).to.be.true; | ||
errorsHandler.captureError(badServerError); | ||
expect(captureErrorSpy.called).to.be.true; | ||
expect(captureErrorSpy.args[0].length).to.equal(1); | ||
expect(captureErrorSpy.args[0][0].name).to.equal(badServerError.name); | ||
}); | ||
it('can capture messages outside of express controllers', function () { | ||
errorsHandler.captureMessage('random message'); | ||
expect(captureMessageSpy.called).to.be.true; | ||
expect(captureMessageSpy.args[0].length).to.equal(1); | ||
expect(captureMessageSpy.args[0][0]).to.equal('random message'); | ||
}); | ||
}); |
10444
240