71 lines
1.8 KiB
TypeScript
71 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));
|
|
});
|
|
});
|