Files
flynn/src/cli/setup/sections.test.ts
T

76 lines
2.2 KiB
TypeScript

import { describe, it, expect } from 'vitest';
import { createPrompter } from './prompts.js';
import { ConfigBuilder } from './config.js';
import { setupMemory } from './memory.js';
import { setupSecurity } from './security.js';
import { setupGateway } from './gateway.js';
function mockReadline(inputs: string[]) {
let questionIdx = 0;
return {
async question(query: string) {
const answer = inputs[questionIdx++];
return answer ?? '';
},
close() {
// no-op
},
[Symbol.asyncIterator]() {
return this;
},
async next() {
return { done: true };
},
} as any;
}
describe('setupMemory', () => {
it('enables vector search with openai embeddings', async () => {
const rl = mockReadline(['y', '1', 'y']);
const p = createPrompter(rl);
const builder = new ConfigBuilder();
builder.setProvider('default', { provider: 'openai', model: 'gpt-4.1', api_key: 'sk-test' });
await setupMemory(p, builder);
const config = builder.build();
expect(config.memory.embedding.enabled).toBe(true);
expect(config.memory.embedding.provider).toBe('openai');
});
it('skips vector search when declined', async () => {
const rl = mockReadline(['n']);
const p = createPrompter(rl);
const builder = new ConfigBuilder();
await setupMemory(p, builder);
const config = builder.build();
expect(config.memory?.embedding?.enabled).toBeFalsy();
});
});
describe('setupSecurity', () => {
it('enables sandbox and pairing', async () => {
const rl = mockReadline(['y', 'y', '']);
const p = createPrompter(rl);
const builder = new ConfigBuilder();
await setupSecurity(p, builder);
const config = builder.build();
expect(config.sandbox.enabled).toBe(true);
expect(config.pairing.enabled).toBe(true);
});
});
describe('setupGateway', () => {
it('configures port and auth token', async () => {
const rl = mockReadline(['9999', 'y', 'my-token', 'n', 'n']);
const p = createPrompter(rl);
const builder = new ConfigBuilder();
await setupGateway(p, builder);
const config = builder.build();
expect(config.server.port).toBe(9999);
expect(config.server.token).toBe('my-token');
});
});