60 lines
2.0 KiB
TypeScript
60 lines
2.0 KiB
TypeScript
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
import type { Server } from 'http';
|
|
import { startServer, stopServer } from './test-utils.js';
|
|
|
|
describe.sequential('Settings API routes', () => {
|
|
let server: Server;
|
|
let baseUrl: string;
|
|
let closeDb: () => void;
|
|
let tempDir: string;
|
|
|
|
beforeEach(async () => {
|
|
({ server, baseUrl, closeDb, tempDir } = await startServer({
|
|
env: {
|
|
OPENROUTER_API_KEY: 'secret-key',
|
|
RXRESUME_EMAIL: 'resume@example.com',
|
|
},
|
|
}));
|
|
});
|
|
|
|
afterEach(async () => {
|
|
await stopServer({ server, closeDb, tempDir });
|
|
});
|
|
|
|
it('returns settings with defaults', async () => {
|
|
const res = await fetch(`${baseUrl}/api/settings`);
|
|
const body = await res.json();
|
|
expect(body.success).toBe(true);
|
|
expect(body.data.defaultModel).toBe('test-model');
|
|
expect(Array.isArray(body.data.searchTerms)).toBe(true);
|
|
expect(body.data.rxresumeEmail).toBe('resume@example.com');
|
|
expect(body.data.openrouterApiKeyHint).toBe('secr');
|
|
expect(body.data.basicAuthActive).toBe(false);
|
|
});
|
|
|
|
it('rejects invalid settings updates and persists overrides', async () => {
|
|
const badPatch = await fetch(`${baseUrl}/api/settings`, {
|
|
method: 'PATCH',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({ jobspyResultsWanted: 9999 }),
|
|
});
|
|
expect(badPatch.status).toBe(400);
|
|
|
|
const patchRes = await fetch(`${baseUrl}/api/settings`, {
|
|
method: 'PATCH',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({
|
|
searchTerms: ['engineer'],
|
|
rxresumeEmail: 'updated@example.com',
|
|
openrouterApiKey: 'updated-secret',
|
|
}),
|
|
});
|
|
const patchBody = await patchRes.json();
|
|
expect(patchBody.success).toBe(true);
|
|
expect(patchBody.data.searchTerms).toEqual(['engineer']);
|
|
expect(patchBody.data.overrideSearchTerms).toEqual(['engineer']);
|
|
expect(patchBody.data.rxresumeEmail).toBe('updated@example.com');
|
|
expect(patchBody.data.openrouterApiKeyHint).toBe('upda');
|
|
});
|
|
});
|