4 const assert
= require('assert');
5 const sinon
= require('sinon'); // eslint-disable-line node/no-unpublished-require
6 const Logger
= require('../../src/logger');
7 const Config
= require('../../config');
9 describe('Logger', function () {
13 beforeEach(function () {
14 config
= new Config('test');
15 logger
= new Logger(config
);
16 Object
.keys(Logger
.nullLogger
).forEach((level
) => sinon
.stub(logger
.backend
, level
));
19 afterEach(function () {
23 it('logs', function () {
24 logger
.info('testScope', 'message', { baz: 'quux' }, { foo: 1 }, 'more other');
25 assert(logger
.backend
.info
.called
);
28 it('logs BigInts', function () {
29 logger
.info('testScope', 'message', { aBigInteger: BigInt(2) });
30 assert(logger
.backend
.info
.called
);
31 assert(logger
.backend
.info
.args
[0][0].includes('"2"'));
34 it('logs Errors', function () {
35 logger
.error('testScope', 'message', { e: new Error('an error') });
36 assert(logger
.backend
.error
.called
);
37 assert(logger
.backend
.error
.args
[0][0].includes('an error'));
40 it('masks credentials', function () {
41 logger
.info('testScope', 'message', {
45 credential: 'password',
49 assert(logger
.backend
.info
.called
);
50 assert(logger
.backend
.info
.args
[0][0].includes('"username"'));
51 assert(logger
.backend
.info
.args
[0][0].includes('"********"'));