config-loader: type fixes

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
Patrik Oldsberg
2023-04-03 14:44:42 +02:00
parent cf13b482f9
commit 9e6f737c80
2 changed files with 25 additions and 17 deletions
@@ -18,7 +18,7 @@ import { EnvConfigSource, readEnvConfig } from './EnvConfigSource';
import { ConfigSource, ConfigSourceData } from './types';
async function readAll(source: ConfigSource) {
const entries = new Array<{ data: ConfigSourceData[] }>();
const entries = new Array<{ configs: ConfigSourceData[] }>();
for await (const item of source.readConfigData()) {
entries.push(item);
}
@@ -29,52 +29,60 @@ const substituteTransform = createSubstitutionTransform(env);
describe('substituteTransform', () => {
it('should not transform unknown values', async () => {
await expect(substituteTransform(false, '/')).resolves.toEqual({
await expect(substituteTransform(false, { dir: '/' })).resolves.toEqual({
applied: false,
});
await expect(substituteTransform([1], '/')).resolves.toEqual({
await expect(substituteTransform([1], { dir: '/' })).resolves.toEqual({
applied: false,
});
await expect(substituteTransform(1, '/')).resolves.toEqual({
await expect(substituteTransform(1, { dir: '/' })).resolves.toEqual({
applied: false,
});
await expect(substituteTransform({ x: 'y' }, '/')).resolves.toEqual({
await expect(
substituteTransform({ x: 'y' }, { dir: '/' }),
).resolves.toEqual({
applied: false,
});
await expect(substituteTransform(null, '/')).resolves.toEqual({
await expect(substituteTransform(null, { dir: '/' })).resolves.toEqual({
applied: false,
});
});
it('should substitute env var', async () => {
await expect(substituteTransform('hello ${SECRET}', '/')).resolves.toEqual({
await expect(
substituteTransform('hello ${SECRET}', { dir: '/' }),
).resolves.toEqual({
applied: true,
value: 'hello my-secret',
});
await expect(
substituteTransform('${SECRET } $${} ${TOKEN }', '/'),
substituteTransform('${SECRET } $${} ${TOKEN }', { dir: '/' }),
).resolves.toEqual({ applied: true, value: 'my-secret ${} my-token' });
await expect(substituteTransform('foo ${MISSING}', '/')).resolves.toEqual({
applied: true,
value: undefined,
});
await expect(
substituteTransform('empty substitute ${}', '/'),
substituteTransform('foo ${MISSING}', { dir: '/' }),
).resolves.toEqual({
applied: true,
value: undefined,
});
await expect(
substituteTransform('foo ${MISSING} ${SECRET}', '/'),
substituteTransform('empty substitute ${}', { dir: '/' }),
).resolves.toEqual({
applied: true,
value: undefined,
});
await expect(
substituteTransform('foo ${MISSING} ${SECRET}', { dir: '/' }),
).resolves.toEqual({ applied: true, value: undefined });
await expect(
substituteTransform('foo ${SECRET} ${SECRET}', '/'),
substituteTransform('foo ${SECRET} ${SECRET}', { dir: '/' }),
).resolves.toEqual({ applied: true, value: 'foo my-secret my-secret' });
await expect(
substituteTransform('foo ${SECRET} $$${ESCAPE_ME}', '/'),
substituteTransform('foo ${SECRET} $$${ESCAPE_ME}', { dir: '/' }),
).resolves.toEqual({ applied: true, value: 'foo my-secret $${ESCAPE_ME}' });
await expect(
substituteTransform('foo $${ESCAPE_ME} $$${ESCAPE_ME_TOO} $${}', '/'),
substituteTransform('foo $${ESCAPE_ME} $$${ESCAPE_ME_TOO} $${}', {
dir: '/',
}),
).resolves.toEqual({
applied: true,
value: 'foo ${ESCAPE_ME} $${ESCAPE_ME_TOO} ${}',