airbrake
Version:
DEPRECATION: please use @airbrake/node instead (https://www.npmjs.com/package/@airbrake/node). A Node.js notifier for Airbrake, the leading exception reporting service.
101 lines (79 loc) • 2.82 kB
JavaScript
var common = require('./common');
var airbrake = require(common.dir.root).createClient(common.projectId, common.key);
var assert = require('assert');
(function testSettingCustomExclusions() {
var err = new Error();
err.domain = { id: 'identifier' };
airbrake.exclude.push('domain');
var cgiData = airbrake.environmentJSON(err);
assert(!cgiData['err.domain']);
}());
(function testCgiDataFromProcessEnv() {
var err = new Error();
var cgiData = airbrake.environmentJSON(err);
assert.equal(cgiData['process.pid'], process.pid);
assert.equal(cgiData['process.uid'], process.getuid());
assert.equal(cgiData['process.gid'], process.getgid());
assert.equal(cgiData['process.cwd'], process.cwd());
assert.equal(cgiData['process.execPath'], process.execPath);
assert.equal(cgiData['process.version'], process.version);
assert.equal(cgiData['process.argv'], process.argv);
assert.ok(cgiData['process.memoryUsage'].rss);
assert.equal(cgiData['os.loadavg'].length, 3);
assert.equal(typeof cgiData['os.uptime'], 'number');
}());
(function testCustomErrorProperties() {
var err = new Error();
err.myKey = 'some value';
var cgiData = airbrake.environmentJSON(err);
assert.equal(cgiData['err.myKey'], err.myKey);
}());
(function testWhitelistKeys() {
var err = new Error();
err.myKey = 'some value';
airbrake.whiteListKeys.push('PWD');
var cgiData = airbrake.environmentJSON(err);
assert.equal(typeof cgiData.PWD, 'string');
assert.equal(cgiData.PATH, '[FILTERED]');
airbrake.whiteListKeys = [];
}());
(function testBlacklistKeys() {
var err = new Error();
err.myKey = 'some value';
airbrake.blackListKeys.push('PWD');
var cgiData = airbrake.environmentJSON(err);
assert.equal(cgiData.PWD, '[FILTERED]');
assert.equal(typeof cgiData.PATH, 'string');
airbrake.blackListKeys = [];
}());
(function testSessionVars() {
var err = new Error();
err.session = { foo: 'bar' };
var session = airbrake.sessionVars(err);
assert.deepEqual(session, err.session);
}());
(function testParamsVars() {
var err = new Error();
err.params = { foo: 'bar' };
var params = airbrake.paramsVars(err);
assert.deepEqual(params, err.params);
}());
(function testCircularVars() {
var vars = { foo: 'bar', circular: {} };
vars.circular.self = vars.circular;
var err = new Error();
err.params = vars;
// test that no exception is thrown
airbrake.notifyJSON(err);
}());
(function testAppendErrorXmlWithBadStack() {
var err = new Error('oh oh');
err.stack += '\n at Array.0 (native)';
airbrake.notifyJSON(err);
}());
(function testEmptyErrorMessageDoesNotProduceInvalidXml() {
// see: https://github.com/felixge/node-airbrake/issues/15
var err = new Error();
var xml = airbrake.notifyJSON(err, true);
assert.ok(!/<\/>/.test(xml));
}());