Skip to content

Commit d2f64f1

Browse files
committed
test: add tests for ANTHROPIC_BASE_URL and ANTHROPIC_AUTH_TOKEN passthrough
- apps/server/tests/unit/providers/claude-provider.test.ts Verify custom endpoint environment variables are passed to the SDK.
1 parent 9fe5b48 commit d2f64f1

1 file changed

Lines changed: 89 additions & 0 deletions

File tree

apps/server/tests/unit/providers/claude-provider.test.ts

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ describe('claude-provider.ts', () => {
1212
vi.clearAllMocks();
1313
provider = new ClaudeProvider();
1414
delete process.env.ANTHROPIC_API_KEY;
15+
delete process.env.ANTHROPIC_BASE_URL;
16+
delete process.env.ANTHROPIC_AUTH_TOKEN;
1517
});
1618

1719
describe('getName', () => {
@@ -286,6 +288,93 @@ describe('claude-provider.ts', () => {
286288
});
287289
});
288290

291+
describe('environment variable passthrough', () => {
292+
afterEach(() => {
293+
delete process.env.ANTHROPIC_BASE_URL;
294+
delete process.env.ANTHROPIC_AUTH_TOKEN;
295+
});
296+
297+
it('should pass ANTHROPIC_BASE_URL to SDK env', async () => {
298+
process.env.ANTHROPIC_BASE_URL = 'https://custom.example.com/v1';
299+
300+
vi.mocked(sdk.query).mockReturnValue(
301+
(async function* () {
302+
yield { type: 'text', text: 'test' };
303+
})()
304+
);
305+
306+
const generator = provider.executeQuery({
307+
prompt: 'Test',
308+
cwd: '/test',
309+
});
310+
311+
await collectAsyncGenerator(generator);
312+
313+
expect(sdk.query).toHaveBeenCalledWith({
314+
prompt: 'Test',
315+
options: expect.objectContaining({
316+
env: expect.objectContaining({
317+
ANTHROPIC_BASE_URL: 'https://custom.example.com/v1',
318+
}),
319+
}),
320+
});
321+
});
322+
323+
it('should pass ANTHROPIC_AUTH_TOKEN to SDK env', async () => {
324+
process.env.ANTHROPIC_AUTH_TOKEN = 'custom-auth-token';
325+
326+
vi.mocked(sdk.query).mockReturnValue(
327+
(async function* () {
328+
yield { type: 'text', text: 'test' };
329+
})()
330+
);
331+
332+
const generator = provider.executeQuery({
333+
prompt: 'Test',
334+
cwd: '/test',
335+
});
336+
337+
await collectAsyncGenerator(generator);
338+
339+
expect(sdk.query).toHaveBeenCalledWith({
340+
prompt: 'Test',
341+
options: expect.objectContaining({
342+
env: expect.objectContaining({
343+
ANTHROPIC_AUTH_TOKEN: 'custom-auth-token',
344+
}),
345+
}),
346+
});
347+
});
348+
349+
it('should pass both custom endpoint vars together', async () => {
350+
process.env.ANTHROPIC_BASE_URL = 'https://gateway.example.com';
351+
process.env.ANTHROPIC_AUTH_TOKEN = 'gateway-token';
352+
353+
vi.mocked(sdk.query).mockReturnValue(
354+
(async function* () {
355+
yield { type: 'text', text: 'test' };
356+
})()
357+
);
358+
359+
const generator = provider.executeQuery({
360+
prompt: 'Test',
361+
cwd: '/test',
362+
});
363+
364+
await collectAsyncGenerator(generator);
365+
366+
expect(sdk.query).toHaveBeenCalledWith({
367+
prompt: 'Test',
368+
options: expect.objectContaining({
369+
env: expect.objectContaining({
370+
ANTHROPIC_BASE_URL: 'https://gateway.example.com',
371+
ANTHROPIC_AUTH_TOKEN: 'gateway-token',
372+
}),
373+
}),
374+
});
375+
});
376+
});
377+
289378
describe('getAvailableModels', () => {
290379
it('should return 4 Claude models', () => {
291380
const models = provider.getAvailableModels();

0 commit comments

Comments
 (0)