signal-desktop/ts/test-node/app/base_config_test.ts
2021-10-25 14:41:44 -05:00

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));
});
});