-/* eslint-env mocha */
'use strict';
-const assert = require('assert');
+const assert = require('node:assert');
+const sinon = require('sinon');
const Logger = require('../../src/logger');
const Config = require('../../config');
beforeEach(function () {
config = new Config('test');
+ logger = new Logger(config);
+ Object.keys(Logger.nullLogger).forEach((level) => sinon.stub(logger.backend, level));
});
- it('logs', function () {
- logger = new Logger(config);
- logger.info('testScope', 'message', { baz: 'quux' }, { foo: 1 }, 'more other');
+ afterEach(function () {
+ sinon.restore();
});
- it('stubs missing levels', function () {
- const backend = {};
- logger = new Logger(config, backend);
- assert.strictEqual(typeof logger.info, 'function');
+ it('logs', function () {
+ logger.info('testScope', 'message', { baz: 'quux' }, { foo: 1 }, 'more other');
+ assert(logger.backend.info.called);
});
it('logs BigInts', function () {
- logger = new Logger(config);
logger.info('testScope', 'message', { aBigInteger: BigInt(2) });
+ assert(logger.backend.info.called);
+ assert(logger.backend.info.args[0][0].includes('"2"'));
});
it('logs Errors', function () {
- logger = new Logger(config);
logger.error('testScope', 'message', { e: new Error('an error') });
- });
-
- it('covers config error', function () {
- config.logger.ignoreBelowLevel = 'not a level';
- try {
- logger = new Logger(config);
- assert.fail('expected RangeError here');
- } catch (e) {
- assert(e instanceof RangeError);
- }
- });
-
- it('covers empty fields', function () {
- logger = new Logger(config);
- logger.info();
+ assert(logger.backend.error.called);
+ assert(logger.backend.error.args[0][0].includes('an error'));
});
it('masks credentials', function () {
- logger = new Logger(config);
logger.info('testScope', 'message', {
ctx: {
parsedBody: {
},
},
});
+ assert(logger.backend.info.called);
+ assert(logger.backend.info.args[0][0].includes('"username"'));
+ assert(logger.backend.info.args[0][0].includes('"********"'));
});
}); // Logger