45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import { StructuredLogger } from './structured-logger.service';
|
|
|
|
describe('StructuredLogger', () => {
|
|
const context = { get: jest.fn() };
|
|
const pino = {
|
|
debug: jest.fn(),
|
|
info: jest.fn(),
|
|
warn: jest.fn(),
|
|
error: jest.fn(),
|
|
};
|
|
|
|
beforeEach(() => jest.clearAllMocks());
|
|
|
|
it('passes only allowlisted fields to Pino', () => {
|
|
context.get.mockReturnValue({ requestId: 'request', token: 'secret' });
|
|
const logger = new StructuredLogger(context as never, pino as never);
|
|
|
|
logger.info('event', {
|
|
userId: 'user',
|
|
brokerageAccountId: 'account',
|
|
password: 'secret',
|
|
});
|
|
|
|
expect(pino.info).toHaveBeenCalledWith(
|
|
{
|
|
requestId: 'request',
|
|
userId: 'user',
|
|
brokerageAccountId: 'account',
|
|
},
|
|
'event',
|
|
);
|
|
});
|
|
|
|
it('delegates event levels to Pino', () => {
|
|
context.get.mockReturnValue(undefined);
|
|
const logger = new StructuredLogger(context as never, pino as never);
|
|
|
|
logger.event('debug', 'debug event');
|
|
logger.event('warn', 'warn event');
|
|
|
|
expect(pino.debug).toHaveBeenCalledWith({}, 'debug event');
|
|
expect(pino.warn).toHaveBeenCalledWith({}, 'warn event');
|
|
});
|
|
});
|