diff --git a/src/config/utils.spec.ts b/src/config/utils.spec.ts index 30f21d34e..551aed0c5 100644 --- a/src/config/utils.spec.ts +++ b/src/config/utils.spec.ts @@ -5,9 +5,11 @@ */ import { + needToLog, replaceAuthErrorsWithEnvironmentVariables, toArrayConfig, } from './utils'; +import { Loglevel } from './loglevel.enum'; describe('config utils', () => { describe('toArrayConfig', () => { @@ -40,4 +42,46 @@ describe('config utils', () => { ).toEqual('"HD_AUTH_GITLAB_test_SCOPE'); }); }); + describe('needToLog', () => { + it('currentLevel ERROR', () => { + const currentLevel = Loglevel.ERROR; + expect(needToLog(currentLevel, Loglevel.ERROR)).toBeTruthy(); + expect(needToLog(currentLevel, Loglevel.WARN)).toBeFalsy(); + expect(needToLog(currentLevel, Loglevel.INFO)).toBeFalsy(); + expect(needToLog(currentLevel, Loglevel.DEBUG)).toBeFalsy(); + expect(needToLog(currentLevel, Loglevel.TRACE)).toBeFalsy(); + }); + it('currentLevel WARN', () => { + const currentLevel = Loglevel.WARN; + expect(needToLog(currentLevel, Loglevel.ERROR)).toBeTruthy(); + expect(needToLog(currentLevel, Loglevel.WARN)).toBeTruthy(); + expect(needToLog(currentLevel, Loglevel.INFO)).toBeFalsy(); + expect(needToLog(currentLevel, Loglevel.DEBUG)).toBeFalsy(); + expect(needToLog(currentLevel, Loglevel.TRACE)).toBeFalsy(); + }); + it('currentLevel INFO', () => { + const currentLevel = Loglevel.INFO; + expect(needToLog(currentLevel, Loglevel.ERROR)).toBeTruthy(); + expect(needToLog(currentLevel, Loglevel.WARN)).toBeTruthy(); + expect(needToLog(currentLevel, Loglevel.INFO)).toBeTruthy(); + expect(needToLog(currentLevel, Loglevel.DEBUG)).toBeFalsy(); + expect(needToLog(currentLevel, Loglevel.TRACE)).toBeFalsy(); + }); + it('currentLevel DEBUG', () => { + const currentLevel = Loglevel.DEBUG; + expect(needToLog(currentLevel, Loglevel.ERROR)).toBeTruthy(); + expect(needToLog(currentLevel, Loglevel.WARN)).toBeTruthy(); + expect(needToLog(currentLevel, Loglevel.INFO)).toBeTruthy(); + expect(needToLog(currentLevel, Loglevel.DEBUG)).toBeTruthy(); + expect(needToLog(currentLevel, Loglevel.TRACE)).toBeFalsy(); + }); + it('currentLevel TRACE', () => { + const currentLevel = Loglevel.TRACE; + expect(needToLog(currentLevel, Loglevel.ERROR)).toBeTruthy(); + expect(needToLog(currentLevel, Loglevel.WARN)).toBeTruthy(); + expect(needToLog(currentLevel, Loglevel.INFO)).toBeTruthy(); + expect(needToLog(currentLevel, Loglevel.DEBUG)).toBeTruthy(); + expect(needToLog(currentLevel, Loglevel.TRACE)).toBeTruthy(); + }); + }); }); diff --git a/src/config/utils.ts b/src/config/utils.ts index 50a695f6e..e02ca8ded 100644 --- a/src/config/utils.ts +++ b/src/config/utils.ts @@ -4,6 +4,8 @@ * SPDX-License-Identifier: AGPL-3.0-only */ +import { Loglevel } from './loglevel.enum'; + export function toArrayConfig(configValue: string, separator = ','): string[] { if (!configValue) { return []; @@ -87,3 +89,27 @@ export function replaceAuthErrorsWithEnvironmentVariables( message = message.replace('.accessRole', '_ACCESS_ROLE'); return message; } + +export function needToLog( + currentLoglevel: Loglevel, + requestedLoglevel: Loglevel, +): boolean { + const current = transformLoglevelToInt(currentLoglevel); + const requested = transformLoglevelToInt(requestedLoglevel); + return current >= requested; +} + +function transformLoglevelToInt(loglevel: Loglevel): number { + switch (loglevel) { + case Loglevel.TRACE: + return 5; + case Loglevel.DEBUG: + return 4; + case Loglevel.INFO: + return 3; + case Loglevel.WARN: + return 2; + case Loglevel.ERROR: + return 1; + } +}