31 lines
1.1 KiB
TypeScript
31 lines
1.1 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import { llmApiError } from '@/lib/server/llm-error-response';
|
|
import { ServerManagedProviderRequiredError } from '@/lib/server/provider-access-policy';
|
|
import { providerAccessApiError } from '@/lib/server/provider-access-response';
|
|
|
|
describe('provider access API response', () => {
|
|
it('maps the deployment denial to a stable 403/FORBIDDEN response', async () => {
|
|
const response = providerAccessApiError(new ServerManagedProviderRequiredError());
|
|
|
|
expect(response?.status).toBe(403);
|
|
await expect(response?.json()).resolves.toMatchObject({
|
|
success: false,
|
|
errorCode: 'FORBIDDEN',
|
|
});
|
|
});
|
|
|
|
it('leaves unrelated errors to the route-specific handler', () => {
|
|
expect(providerAccessApiError(new Error('upstream failed'))).toBeNull();
|
|
});
|
|
|
|
it('takes precedence in the shared LLM error mapper', async () => {
|
|
const response = llmApiError(new ServerManagedProviderRequiredError());
|
|
|
|
expect(response.status).toBe(403);
|
|
await expect(response.json()).resolves.toMatchObject({
|
|
success: false,
|
|
errorCode: 'FORBIDDEN',
|
|
});
|
|
});
|
|
});
|