update dependencies and devDependencies, fix lint issues
[websub-hub] / test / src / logger.js
1 'use strict';
2
3 const assert = require('node:assert');
4 const sinon = require('sinon');
5 const Logger = require('../../src/logger');
6 const Config = require('../../config');
7
8 describe('Logger', function () {
9 let config;
10 let logger;
11
12 beforeEach(function () {
13 config = new Config('test');
14 logger = new Logger(config);
15 Object.keys(Logger.nullLogger).forEach((level) => sinon.stub(logger.backend, level));
16 });
17
18 afterEach(function () {
19 sinon.restore();
20 });
21
22 it('logs', function () {
23 logger.info('testScope', 'message', { baz: 'quux' }, { foo: 1 }, 'more other');
24 assert(logger.backend.info.called);
25 });
26
27 it('logs BigInts', function () {
28 logger.info('testScope', 'message', { aBigInteger: BigInt(2) });
29 assert(logger.backend.info.called);
30 assert(logger.backend.info.args[0][0].includes('"2"'));
31 });
32
33 it('logs Errors', function () {
34 logger.error('testScope', 'message', { e: new Error('an error') });
35 assert(logger.backend.error.called);
36 assert(logger.backend.error.args[0][0].includes('an error'));
37 });
38
39 it('masks credentials', function () {
40 logger.info('testScope', 'message', {
41 ctx: {
42 parsedBody: {
43 identity: 'username',
44 credential: 'password',
45 },
46 },
47 });
48 assert(logger.backend.info.called);
49 assert(logger.backend.info.args[0][0].includes('"username"'));
50 assert(logger.backend.info.args[0][0].includes('"********"'));
51 });
52
53 }); // Logger