mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-09 13:51:57 -04:00
158 lines
6 KiB
TypeScript
158 lines
6 KiB
TypeScript
/*
|
|
* SPDX-FileCopyrightText: 2023 The HedgeDoc developers (see AUTHORS file)
|
|
*
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
import { Loglevel } from './loglevel.enum';
|
|
import {
|
|
ensureNoDuplicatesExist,
|
|
findDuplicatesInArray,
|
|
needToLog,
|
|
parseOptionalBoolean,
|
|
parseOptionalNumber,
|
|
replaceAuthErrorsWithEnvironmentVariables,
|
|
toArrayConfig,
|
|
} from './utils';
|
|
|
|
describe('config utils', () => {
|
|
describe('findDuplicatesInArray', () => {
|
|
it('empty array', () => {
|
|
expect(findDuplicatesInArray([])).toEqual([]);
|
|
});
|
|
it('returns empty array when input does not have any duplicates', () => {
|
|
expect(findDuplicatesInArray(['A', 'B'])).toEqual([]);
|
|
});
|
|
it('returns duplicates if input contains a duplicate', () => {
|
|
expect(findDuplicatesInArray(['A', 'B', 'A'])).toEqual(['A']);
|
|
});
|
|
it('returns duplicates if input contains a duplicate twice', () => {
|
|
expect(findDuplicatesInArray(['A', 'B', 'A', 'A'])).toEqual(['A']);
|
|
});
|
|
it('returns duplicates if input contains multiple duplicates', () => {
|
|
expect(findDuplicatesInArray(['A', 'B', 'A', 'B'])).toEqual(['A', 'B']);
|
|
});
|
|
});
|
|
describe('ensureNoDuplicatesExist', () => {
|
|
// eslint-disable-next-line jest/expect-expect
|
|
it('throws no error if everything is correct', () => {
|
|
ensureNoDuplicatesExist('Test', ['A']);
|
|
});
|
|
it('throws error if there is a duplicate', () => {
|
|
expect(() => ensureNoDuplicatesExist('Test', ['A', 'A'])).toThrow(
|
|
"Your Test names 'A,A' contain duplicates 'A'",
|
|
);
|
|
});
|
|
it('throws error if there are multiple duplicates', () => {
|
|
expect(() =>
|
|
ensureNoDuplicatesExist('Test', ['A', 'A', 'B', 'B']),
|
|
).toThrow("Your Test names 'A,A,B,B' contain duplicates 'A,B'");
|
|
});
|
|
});
|
|
describe('toArrayConfig', () => {
|
|
it('empty', () => {
|
|
expect(toArrayConfig('')).toEqual(undefined);
|
|
expect(toArrayConfig(undefined)).toEqual(undefined);
|
|
});
|
|
it('one element', () => {
|
|
expect(toArrayConfig('one')).toEqual(['one']);
|
|
});
|
|
it('multiple elements', () => {
|
|
expect(toArrayConfig('one, two, three')).toEqual(['one', 'two', 'three']);
|
|
});
|
|
it('non default seperator', () => {
|
|
expect(toArrayConfig('one ; two ; three', ';')).toEqual([
|
|
'one',
|
|
'two',
|
|
'three',
|
|
]);
|
|
});
|
|
});
|
|
describe('replaceAuthErrorsWithEnvironmentVariables', () => {
|
|
it('"ldap[0].url', () => {
|
|
expect(
|
|
replaceAuthErrorsWithEnvironmentVariables(
|
|
'"ldap[0].url',
|
|
'ldap',
|
|
'HD_AUTH_LDAP_',
|
|
['test'],
|
|
),
|
|
).toEqual('"HD_AUTH_LDAP_test_URL');
|
|
});
|
|
it('"ldap[0].url is not changed by gitlab call', () => {
|
|
expect(
|
|
replaceAuthErrorsWithEnvironmentVariables(
|
|
'"ldap[0].url',
|
|
'gitlab',
|
|
'HD_AUTH_GITLAB_',
|
|
['test'],
|
|
),
|
|
).toEqual('"ldap[0].url');
|
|
});
|
|
});
|
|
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();
|
|
});
|
|
});
|
|
describe('parseOptionalNumber', () => {
|
|
it('returns undefined on undefined parameter', () => {
|
|
expect(parseOptionalNumber(undefined)).toEqual(undefined);
|
|
});
|
|
it('correctly parses a integer string', () => {
|
|
expect(parseOptionalNumber('42')).toEqual(42);
|
|
});
|
|
it('correctly parses a float string', () => {
|
|
expect(parseOptionalNumber('3.14')).toEqual(3.14);
|
|
});
|
|
});
|
|
describe('parseOptionalBoolean', () => {
|
|
it('returns undefined on undefined parameter', () => {
|
|
expect(parseOptionalBoolean(undefined)).toEqual(undefined);
|
|
});
|
|
it('correctly parses a given string', () => {
|
|
expect(parseOptionalBoolean('true')).toEqual(true);
|
|
expect(parseOptionalBoolean('1')).toEqual(true);
|
|
expect(parseOptionalBoolean('y')).toEqual(true);
|
|
expect(parseOptionalBoolean('false')).toEqual(false);
|
|
expect(parseOptionalBoolean('0')).toEqual(false);
|
|
expect(parseOptionalBoolean('HedgeDoc')).toEqual(false);
|
|
});
|
|
});
|
|
});
|