mirror of
https://github.com/Kaelio/ktx.git
synced 2026-06-25 08:48:08 +02:00
35 lines
1.5 KiB
TypeScript
35 lines
1.5 KiB
TypeScript
|
|
import { mkdir, writeFile } from 'node:fs/promises';
|
||
|
|
import { tmpdir } from 'node:os';
|
||
|
|
import { join } from 'node:path';
|
||
|
|
import { describe, expect, it } from 'vitest';
|
||
|
|
import { resolveKloConfigReference, resolveKloHomePath } from './config-reference.js';
|
||
|
|
|
||
|
|
describe('KLO config references', () => {
|
||
|
|
it('resolves env references without returning empty values', () => {
|
||
|
|
expect(resolveKloConfigReference('env:AI_GATEWAY_API_KEY', { AI_GATEWAY_API_KEY: ' gateway-key ' })).toBe(
|
||
|
|
'gateway-key',
|
||
|
|
);
|
||
|
|
expect(resolveKloConfigReference('env:AI_GATEWAY_API_KEY', { AI_GATEWAY_API_KEY: ' ' })).toBeUndefined();
|
||
|
|
expect(resolveKloConfigReference('env:AI_GATEWAY_API_KEY', {})).toBeUndefined();
|
||
|
|
});
|
||
|
|
|
||
|
|
it('resolves file references and trims file content', async () => {
|
||
|
|
const dir = join(tmpdir(), `klo-config-reference-${process.pid}`);
|
||
|
|
await mkdir(dir, { recursive: true });
|
||
|
|
const keyPath = join(dir, 'gateway-key.txt');
|
||
|
|
await writeFile(keyPath, 'file-gateway-key\n', 'utf8');
|
||
|
|
|
||
|
|
expect(resolveKloConfigReference(`file:${keyPath}`, {})).toBe('file-gateway-key');
|
||
|
|
});
|
||
|
|
|
||
|
|
it('returns literal values unchanged after trimming blank-only values', () => {
|
||
|
|
expect(resolveKloConfigReference('provider/model', {})).toBe('provider/model');
|
||
|
|
expect(resolveKloConfigReference(' ', {})).toBeUndefined();
|
||
|
|
expect(resolveKloConfigReference(undefined, {})).toBeUndefined();
|
||
|
|
});
|
||
|
|
|
||
|
|
it('resolves home-prefixed paths', () => {
|
||
|
|
expect(resolveKloHomePath('~/klo/key.txt')).toContain('/klo/key.txt');
|
||
|
|
});
|
||
|
|
});
|