mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2024-11-25 19:26:31 -05:00
test: add unit test for noteConfig
Signed-off-by: Philip Molares <philip.molares@udo.edu>
This commit is contained in:
parent
96747b6d68
commit
35075bdb0b
1 changed files with 166 additions and 0 deletions
166
src/config/note.config.spec.ts
Normal file
166
src/config/note.config.spec.ts
Normal file
|
@ -0,0 +1,166 @@
|
||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
*/
|
||||||
|
import mockedEnv from 'mocked-env';
|
||||||
|
|
||||||
|
import noteConfig from './note.config';
|
||||||
|
|
||||||
|
describe('noteConfig', () => {
|
||||||
|
const forbiddenNoteIds = ['forbidden_1', 'forbidden_2'];
|
||||||
|
const forbiddenNoteId = 'single_forbidden_id';
|
||||||
|
const invalidforbiddenNoteIds = ['', ''];
|
||||||
|
const maxDocumentLength = 1234;
|
||||||
|
const negativeMaxDocumentLength = -123;
|
||||||
|
const floatMaxDocumentLength = 2.71;
|
||||||
|
const invalidMaxDocumentLength = 'not-a-max-document-length';
|
||||||
|
|
||||||
|
describe('correctly parses config', () => {
|
||||||
|
it('when given correct and complete environment variables', async () => {
|
||||||
|
const restore = mockedEnv(
|
||||||
|
{
|
||||||
|
/* eslint-disable @typescript-eslint/naming-convention */
|
||||||
|
HD_FORBIDDEN_NOTE_IDS: forbiddenNoteIds.join(' , '),
|
||||||
|
HD_MAX_DOCUMENT_LENGTH: maxDocumentLength.toString(),
|
||||||
|
/* eslint-enable @typescript-eslint/naming-convention */
|
||||||
|
},
|
||||||
|
{
|
||||||
|
clear: true,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
const config = noteConfig();
|
||||||
|
expect(config.forbiddenNoteIds).toHaveLength(forbiddenNoteIds.length);
|
||||||
|
expect(config.forbiddenNoteIds).toEqual(forbiddenNoteIds);
|
||||||
|
expect(config.maxDocumentLength).toEqual(maxDocumentLength);
|
||||||
|
restore();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('when no HD_FORBIDDEN_NOTE_IDS is set', () => {
|
||||||
|
const restore = mockedEnv(
|
||||||
|
{
|
||||||
|
/* eslint-disable @typescript-eslint/naming-convention */
|
||||||
|
HD_MAX_DOCUMENT_LENGTH: maxDocumentLength.toString(),
|
||||||
|
/* eslint-enable @typescript-eslint/naming-convention */
|
||||||
|
},
|
||||||
|
{
|
||||||
|
clear: true,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
const config = noteConfig();
|
||||||
|
expect(config.forbiddenNoteIds).toHaveLength(0);
|
||||||
|
expect(config.maxDocumentLength).toEqual(maxDocumentLength);
|
||||||
|
restore();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('when no HD_MAX_DOCUMENT_LENGTH is set', () => {
|
||||||
|
const restore = mockedEnv(
|
||||||
|
{
|
||||||
|
/* eslint-disable @typescript-eslint/naming-convention */
|
||||||
|
HD_FORBIDDEN_NOTE_IDS: forbiddenNoteIds.join(' , '),
|
||||||
|
/* eslint-enable @typescript-eslint/naming-convention */
|
||||||
|
},
|
||||||
|
{
|
||||||
|
clear: true,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
const config = noteConfig();
|
||||||
|
expect(config.forbiddenNoteIds).toHaveLength(forbiddenNoteIds.length);
|
||||||
|
expect(config.forbiddenNoteIds).toEqual(forbiddenNoteIds);
|
||||||
|
expect(config.maxDocumentLength).toEqual(100000);
|
||||||
|
restore();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('when HD_FORBIDDEN_NOTE_IDS is a single item', () => {
|
||||||
|
const restore = mockedEnv(
|
||||||
|
{
|
||||||
|
/* eslint-disable @typescript-eslint/naming-convention */
|
||||||
|
HD_FORBIDDEN_NOTE_IDS: forbiddenNoteId,
|
||||||
|
HD_MAX_DOCUMENT_LENGTH: maxDocumentLength.toString(),
|
||||||
|
/* eslint-enable @typescript-eslint/naming-convention */
|
||||||
|
},
|
||||||
|
{
|
||||||
|
clear: true,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
const config = noteConfig();
|
||||||
|
expect(config.forbiddenNoteIds).toHaveLength(1);
|
||||||
|
expect(config.forbiddenNoteIds[0]).toEqual(forbiddenNoteId);
|
||||||
|
expect(config.maxDocumentLength).toEqual(maxDocumentLength);
|
||||||
|
restore();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
describe('throws error', () => {
|
||||||
|
it('when given a non-valid HD_FORBIDDEN_NOTE_IDS', async () => {
|
||||||
|
const restore = mockedEnv(
|
||||||
|
{
|
||||||
|
/* eslint-disable @typescript-eslint/naming-convention */
|
||||||
|
HD_FORBIDDEN_NOTE_IDS: invalidforbiddenNoteIds.join(' , '),
|
||||||
|
HD_MAX_DOCUMENT_LENGTH: maxDocumentLength.toString(),
|
||||||
|
/* eslint-enable @typescript-eslint/naming-convention */
|
||||||
|
},
|
||||||
|
{
|
||||||
|
clear: true,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
expect(() => noteConfig()).toThrow(
|
||||||
|
'"forbiddenNoteIds[0]" is not allowed to be empty',
|
||||||
|
);
|
||||||
|
restore();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('when given a negative HD_MAX_DOCUMENT_LENGTH', async () => {
|
||||||
|
const restore = mockedEnv(
|
||||||
|
{
|
||||||
|
/* eslint-disable @typescript-eslint/naming-convention */
|
||||||
|
HD_FORBIDDEN_NOTE_IDS: forbiddenNoteIds.join(' , '),
|
||||||
|
HD_MAX_DOCUMENT_LENGTH: negativeMaxDocumentLength.toString(),
|
||||||
|
/* eslint-enable @typescript-eslint/naming-convention */
|
||||||
|
},
|
||||||
|
{
|
||||||
|
clear: true,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
expect(() => noteConfig()).toThrow(
|
||||||
|
'"HD_MAX_DOCUMENT_LENGTH" must be a positive number',
|
||||||
|
);
|
||||||
|
restore();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('when given a non-integer HD_MAX_DOCUMENT_LENGTH', async () => {
|
||||||
|
const restore = mockedEnv(
|
||||||
|
{
|
||||||
|
/* eslint-disable @typescript-eslint/naming-convention */
|
||||||
|
HD_FORBIDDEN_NOTE_IDS: forbiddenNoteIds.join(' , '),
|
||||||
|
HD_MAX_DOCUMENT_LENGTH: floatMaxDocumentLength.toString(),
|
||||||
|
/* eslint-enable @typescript-eslint/naming-convention */
|
||||||
|
},
|
||||||
|
{
|
||||||
|
clear: true,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
expect(() => noteConfig()).toThrow(
|
||||||
|
'"HD_MAX_DOCUMENT_LENGTH" must be an integer',
|
||||||
|
);
|
||||||
|
restore();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('when given a non-number HD_MAX_DOCUMENT_LENGTH', async () => {
|
||||||
|
const restore = mockedEnv(
|
||||||
|
{
|
||||||
|
/* eslint-disable @typescript-eslint/naming-convention */
|
||||||
|
HD_FORBIDDEN_NOTE_IDS: forbiddenNoteIds.join(' , '),
|
||||||
|
HD_MAX_DOCUMENT_LENGTH: invalidMaxDocumentLength,
|
||||||
|
/* eslint-enable @typescript-eslint/naming-convention */
|
||||||
|
},
|
||||||
|
{
|
||||||
|
clear: true,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
expect(() => noteConfig()).toThrow(
|
||||||
|
'"HD_MAX_DOCUMENT_LENGTH" must be a number',
|
||||||
|
);
|
||||||
|
restore();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in a new issue