mirror of
https://github.com/n8n-io/n8n.git
synced 2025-03-05 20:50:17 -08:00
Some checks are pending
Test Master / install-and-build (push) Waiting to run
Test Master / Unit tests (18.x) (push) Blocked by required conditions
Test Master / Unit tests (20.x) (push) Blocked by required conditions
Test Master / Unit tests (22.4) (push) Blocked by required conditions
Test Master / Lint (push) Blocked by required conditions
Test Master / Notify Slack on failure (push) Blocked by required conditions
Benchmark Docker Image CI / build (push) Waiting to run
146 lines
4 KiB
TypeScript
146 lines
4 KiB
TypeScript
import type { GlobalConfig } from '@n8n/config';
|
|
import { mock } from 'jest-mock-extended';
|
|
import type { InstanceSettings } from 'n8n-core';
|
|
|
|
import { Logger } from '@/logging/logger.service';
|
|
|
|
describe('Logger', () => {
|
|
describe('transports', () => {
|
|
test('if `console` selected, should set console transport', () => {
|
|
const globalConfig = mock<GlobalConfig>({
|
|
logging: {
|
|
level: 'info',
|
|
outputs: ['console'],
|
|
},
|
|
});
|
|
|
|
const logger = new Logger(globalConfig, mock<InstanceSettings>());
|
|
|
|
const { transports } = logger.getInternalLogger();
|
|
|
|
expect(transports).toHaveLength(1);
|
|
|
|
const [transport] = transports;
|
|
|
|
expect(transport.constructor.name).toBe('Console');
|
|
});
|
|
|
|
test('if `file` selected, should set file transport', () => {
|
|
const globalConfig = mock<GlobalConfig>({
|
|
logging: {
|
|
level: 'info',
|
|
outputs: ['file'],
|
|
file: {
|
|
fileSizeMax: 100,
|
|
fileCountMax: 16,
|
|
location: 'logs/n8n.log',
|
|
},
|
|
},
|
|
});
|
|
|
|
const logger = new Logger(globalConfig, mock<InstanceSettings>({ n8nFolder: '/tmp' }));
|
|
|
|
const { transports } = logger.getInternalLogger();
|
|
|
|
expect(transports).toHaveLength(1);
|
|
|
|
const [transport] = transports;
|
|
|
|
expect(transport.constructor.name).toBe('File');
|
|
});
|
|
});
|
|
|
|
describe('levels', () => {
|
|
test('if `error` selected, should enable `error` level', () => {
|
|
const globalConfig = mock<GlobalConfig>({
|
|
logging: {
|
|
level: 'error',
|
|
outputs: ['console'],
|
|
},
|
|
});
|
|
|
|
const logger = new Logger(globalConfig, mock<InstanceSettings>());
|
|
|
|
const internalLogger = logger.getInternalLogger();
|
|
|
|
expect(internalLogger.isErrorEnabled()).toBe(true);
|
|
expect(internalLogger.isWarnEnabled()).toBe(false);
|
|
expect(internalLogger.isInfoEnabled()).toBe(false);
|
|
expect(internalLogger.isDebugEnabled()).toBe(false);
|
|
});
|
|
|
|
test('if `warn` selected, should enable `error` and `warn` levels', () => {
|
|
const globalConfig = mock<GlobalConfig>({
|
|
logging: {
|
|
level: 'warn',
|
|
outputs: ['console'],
|
|
},
|
|
});
|
|
|
|
const logger = new Logger(globalConfig, mock<InstanceSettings>());
|
|
|
|
const internalLogger = logger.getInternalLogger();
|
|
|
|
expect(internalLogger.isErrorEnabled()).toBe(true);
|
|
expect(internalLogger.isWarnEnabled()).toBe(true);
|
|
expect(internalLogger.isInfoEnabled()).toBe(false);
|
|
expect(internalLogger.isDebugEnabled()).toBe(false);
|
|
});
|
|
|
|
test('if `info` selected, should enable `error`, `warn`, and `info` levels', () => {
|
|
const globalConfig = mock<GlobalConfig>({
|
|
logging: {
|
|
level: 'info',
|
|
outputs: ['console'],
|
|
},
|
|
});
|
|
|
|
const logger = new Logger(globalConfig, mock<InstanceSettings>());
|
|
|
|
const internalLogger = logger.getInternalLogger();
|
|
|
|
expect(internalLogger.isErrorEnabled()).toBe(true);
|
|
expect(internalLogger.isWarnEnabled()).toBe(true);
|
|
expect(internalLogger.isInfoEnabled()).toBe(true);
|
|
expect(internalLogger.isDebugEnabled()).toBe(false);
|
|
});
|
|
|
|
test('if `debug` selected, should enable all levels', () => {
|
|
const globalConfig = mock<GlobalConfig>({
|
|
logging: {
|
|
level: 'debug',
|
|
outputs: ['console'],
|
|
},
|
|
});
|
|
|
|
const logger = new Logger(globalConfig, mock<InstanceSettings>());
|
|
|
|
const internalLogger = logger.getInternalLogger();
|
|
|
|
expect(internalLogger.isErrorEnabled()).toBe(true);
|
|
expect(internalLogger.isWarnEnabled()).toBe(true);
|
|
expect(internalLogger.isInfoEnabled()).toBe(true);
|
|
expect(internalLogger.isDebugEnabled()).toBe(true);
|
|
});
|
|
|
|
test('if `silent` selected, should disable all levels', () => {
|
|
const globalConfig = mock<GlobalConfig>({
|
|
logging: {
|
|
level: 'silent',
|
|
outputs: ['console'],
|
|
},
|
|
});
|
|
|
|
const logger = new Logger(globalConfig, mock<InstanceSettings>());
|
|
|
|
const internalLogger = logger.getInternalLogger();
|
|
|
|
expect(internalLogger.isErrorEnabled()).toBe(false);
|
|
expect(internalLogger.isWarnEnabled()).toBe(false);
|
|
expect(internalLogger.isInfoEnabled()).toBe(false);
|
|
expect(internalLogger.isDebugEnabled()).toBe(false);
|
|
expect(internalLogger.silent).toBe(true);
|
|
});
|
|
});
|
|
});
|