log4js-node/test/tap/logFaces-UDP-test.js
2018-05-12 09:38:20 +10:00

101 lines
2.5 KiB
JavaScript

'use strict';
const test = require('tap').test;
const sandbox = require('sandboxed-module');
const appender = require('../../lib/appenders/logFaces-UDP');
function setupLogging(category, options) {
const fakeDgram = {
createSocket: function (type) {
fakeDgram.type = type;
return {
send: function (buffer, start, end, port, host, cb) {
fakeDgram.buffer = buffer;
fakeDgram.start = start;
fakeDgram.end = end;
fakeDgram.port = port;
fakeDgram.host = host;
fakeDgram.cb = cb;
}
};
}
};
const fakeConsole = {
error: function (msg, err) {
this.msg = msg;
this.err = err;
}
};
const log4js = sandbox.require('../../lib/log4js', {
requires: {
dgram: fakeDgram
},
globals: {
console: fakeConsole
}
});
options.type = 'logFaces-UDP';
log4js.configure({
appenders: {
udp: options
},
categories: { default: { appenders: ['udp'], level: 'trace' } }
});
return {
logger: log4js.getLogger(category),
dgram: fakeDgram,
console: fakeConsole
};
}
test('logFaces appender', (batch) => {
batch.test('should export a configure function', (t) => {
t.type(appender.configure, 'function');
t.end();
});
batch.test('when using UDP receivers', (t) => {
const setup = setupLogging('udpCategory', {
application: 'LFS-UDP',
remoteHost: '127.0.0.1',
port: 55201
});
setup.logger.addContext('foo', 'bar');
setup.logger.addContext('bar', 'foo');
setup.logger.error('Log event #2');
t.test('an event should be sent', (assert) => {
const event = JSON.parse(setup.dgram.buffer.toString());
assert.equal(event.a, 'LFS-UDP');
assert.equal(event.m, 'Log event #2');
assert.equal(event.g, 'udpCategory');
assert.equal(event.p, 'ERROR');
assert.equal(event.p_foo, 'bar');
assert.equal(event.p_bar, 'foo');
// Assert timestamp, up to hours resolution.
const date = new Date(event.t);
assert.equal(
date.toISOString().substring(0, 14),
new Date().toISOString().substring(0, 14)
);
assert.end();
});
t.test('dgram errors should be sent to console.error', (assert) => {
setup.dgram.cb('something went wrong');
assert.equal(setup.console.msg, 'log4js.logFacesUDPAppender error sending to 127.0.0.1:55201, error: ');
assert.equal(setup.console.err, 'something went wrong');
assert.end();
});
t.end();
});
batch.end();
});