From 733da22d2c0d08dcbe439a0307024079e80920b7 Mon Sep 17 00:00:00 2001 From: DaKheera47 Date: Thu, 22 Jan 2026 21:48:41 +0000 Subject: [PATCH] mock fetch --- .../src/server/api/routes/onboarding.test.ts | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/orchestrator/src/server/api/routes/onboarding.test.ts b/orchestrator/src/server/api/routes/onboarding.test.ts index 4a2b38c..976e3b6 100644 --- a/orchestrator/src/server/api/routes/onboarding.test.ts +++ b/orchestrator/src/server/api/routes/onboarding.test.ts @@ -1,21 +1,25 @@ -import { describe, it, expect, beforeEach, afterEach } from 'vitest'; +import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'; import type { Server } from 'http'; import { writeFile } from 'fs/promises'; import { join } from 'path'; import { startServer, stopServer } from './test-utils.js'; +import { RxResumeClient } from '@server/services/rxresume-client.js'; describe.sequential('Onboarding API routes', () => { let server: Server; let baseUrl: string; let closeDb: () => void; let tempDir: string; + let originalFetch: typeof global.fetch; beforeEach(async () => { + originalFetch = global.fetch; ({ server, baseUrl, closeDb, tempDir } = await startServer()); }); afterEach(async () => { await stopServer({ server, closeDb, tempDir }); + global.fetch = originalFetch; }); describe('POST /api/onboarding/validate/openrouter', () => { @@ -47,6 +51,17 @@ describe.sequential('Onboarding API routes', () => { }); it('validates an invalid API key against OpenRouter', async () => { + global.fetch = vi.fn((input, init) => { + const url = typeof input === 'string' ? input : input.url; + if (url.startsWith('https://openrouter.ai/api/v1/key')) { + return Promise.resolve({ + ok: false, + status: 401, + json: async () => ({ error: { message: 'invalid api key' } }), + } as Response); + } + return originalFetch(input, init); + }); const res = await fetch(`${baseUrl}/api/onboarding/validate/openrouter`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, @@ -103,6 +118,11 @@ describe.sequential('Onboarding API routes', () => { }); it('validates invalid credentials against RxResume', async () => { + vi.spyOn(RxResumeClient, 'verifyCredentials').mockResolvedValue({ + ok: false, + status: 401, + message: 'InvalidCredentials', + }); const res = await fetch(`${baseUrl}/api/onboarding/validate/rxresume`, { method: 'POST', headers: { 'Content-Type': 'application/json' },