72 lines
1.8 KiB
TypeScript
72 lines
1.8 KiB
TypeScript
|
// Copyright 2021 Signal Messenger, LLC
|
||
|
// SPDX-License-Identifier: AGPL-3.0-only
|
||
|
|
||
|
import { tmpdir } from 'os';
|
||
|
import { writeFileSync, unlinkSync } from 'fs';
|
||
|
|
||
|
import { v4 as generateGuid } from 'uuid';
|
||
|
import { assert } from 'chai';
|
||
|
|
||
|
import { start } from '../../../app/base_config';
|
||
|
|
||
|
describe('base_config', () => {
|
||
|
let targetFile: string | undefined;
|
||
|
|
||
|
function getNewPath() {
|
||
|
return `${tmpdir()}/${generateGuid()}.txt`;
|
||
|
}
|
||
|
|
||
|
afterEach(() => {
|
||
|
if (targetFile) {
|
||
|
unlinkSync(targetFile);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
it('does not throw if file is missing', () => {
|
||
|
const missingFile = getNewPath();
|
||
|
const { _getCachedValue } = start('test', missingFile);
|
||
|
|
||
|
assert.deepEqual(_getCachedValue(), Object.create(null));
|
||
|
});
|
||
|
|
||
|
it('successfully loads config file', () => {
|
||
|
targetFile = getNewPath();
|
||
|
|
||
|
const config = { a: 1, b: 2 };
|
||
|
writeFileSync(targetFile, JSON.stringify(config));
|
||
|
const { _getCachedValue } = start('test', targetFile);
|
||
|
|
||
|
assert.deepEqual(_getCachedValue(), config);
|
||
|
});
|
||
|
|
||
|
it('throws if file is malformed', () => {
|
||
|
targetFile = getNewPath();
|
||
|
|
||
|
writeFileSync(targetFile, '{{ malformed JSON');
|
||
|
|
||
|
const fileForClosure = targetFile;
|
||
|
assert.throws(() => start('test', fileForClosure));
|
||
|
});
|
||
|
|
||
|
it('does not throw if file is empty', () => {
|
||
|
targetFile = getNewPath();
|
||
|
|
||
|
writeFileSync(targetFile, '');
|
||
|
|
||
|
const { _getCachedValue } = start('test', targetFile);
|
||
|
|
||
|
assert.deepEqual(_getCachedValue(), Object.create(null));
|
||
|
});
|
||
|
|
||
|
it('does not throw if file is malformed, with allowMalformedOnStartup', () => {
|
||
|
targetFile = getNewPath();
|
||
|
|
||
|
writeFileSync(targetFile, '{{ malformed JSON');
|
||
|
const { _getCachedValue } = start('test', targetFile, {
|
||
|
allowMalformedOnStartup: true,
|
||
|
});
|
||
|
|
||
|
assert.deepEqual(_getCachedValue(), Object.create(null));
|
||
|
});
|
||
|
});
|