@unito/integration-sdk
Version:
Integration SDK
64 lines (63 loc) • 2.7 kB
JavaScript
import assert from 'node:assert/strict';
import { describe, it } from 'node:test';
import injectLogger from '../../src/middlewares/logger.js';
describe('logger middleware', () => {
it('initializes', () => {
const request = { header: (_key) => undefined };
const response = { locals: {} };
injectLogger(request, response, () => { });
assert.deepEqual(response.locals.logger.getMetadata(), {
correlation_id: undefined,
request_id: undefined,
});
});
it('correlation id', () => {
const request = { header: (_key) => undefined };
const response = { locals: { correlationId: '123', requestId: 'req-1' } };
injectLogger(request, response, () => { });
assert.deepEqual(response.locals.logger.getMetadata(), {
correlation_id: '123',
request_id: 'req-1',
});
});
it('additional context', () => {
const additional = JSON.stringify({
foo: 'bar',
});
const request = { header: (_key) => additional };
const response = { locals: { correlationId: '123' } };
injectLogger(request, response, () => { });
assert.deepEqual(response.locals.logger.getMetadata(), {
correlation_id: '123',
request_id: undefined,
foo: 'bar',
});
});
it('malformed additional context', () => {
const request = { header: (_key) => 'nope' };
const response = { locals: { correlationId: '123' } };
injectLogger(request, response, () => { });
assert.deepEqual(response.locals.logger.getMetadata(), {
correlation_id: '123',
request_id: undefined,
});
});
it('sets logger level to debug when X-Unito-Debug header is present', testContext => {
const request = {
header: (key) => (key === 'X-Unito-Debug' ? 'true' : undefined),
};
const response = { locals: {} };
const debugSpy = testContext.mock.method(global.console, 'debug', () => { });
injectLogger(request, response, () => { });
response.locals.logger.debug('should now be visible');
assert.strictEqual(debugSpy.mock.calls.length, 1);
});
it('keeps default level when X-Unito-Debug header is absent', testContext => {
const request = { header: (_key) => undefined };
const response = { locals: {} };
const debugSpy = testContext.mock.method(global.console, 'debug', () => { });
injectLogger(request, response, () => { });
response.locals.logger.debug('should be suppressed');
assert.strictEqual(debugSpy.mock.calls.length, 0);
});
});