feat: initial release v0.3.0
This commit is contained in:
67
tests/unit/model-gateway/openai-compat-responses.test.ts
Normal file
67
tests/unit/model-gateway/openai-compat-responses.test.ts
Normal file
@@ -0,0 +1,67 @@
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
|
||||
const resolveOpenAICompatClientConfigMock = vi.hoisted(() =>
|
||||
vi.fn(async () => ({
|
||||
providerId: 'openai-compatible:node-1',
|
||||
baseUrl: 'https://compat.example.com/v1',
|
||||
apiKey: 'sk-test',
|
||||
})),
|
||||
)
|
||||
|
||||
vi.mock('@/lib/model-gateway/openai-compat/common', () => ({
|
||||
resolveOpenAICompatClientConfig: resolveOpenAICompatClientConfigMock,
|
||||
}))
|
||||
|
||||
import { runOpenAICompatResponsesCompletion } from '@/lib/model-gateway/openai-compat/responses'
|
||||
|
||||
describe('model-gateway openai-compat responses executor', () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks()
|
||||
})
|
||||
|
||||
it('converts responses payload to normalized chat completion', async () => {
|
||||
const fetchMock = vi.fn(async () => new Response(JSON.stringify({
|
||||
output: [
|
||||
{ type: 'reasoning', text: 'think-' },
|
||||
{ type: 'output_text', text: 'hello' },
|
||||
],
|
||||
usage: {
|
||||
input_tokens: 12,
|
||||
output_tokens: 7,
|
||||
},
|
||||
}), { status: 200 }))
|
||||
vi.stubGlobal('fetch', fetchMock)
|
||||
|
||||
const completion = await runOpenAICompatResponsesCompletion({
|
||||
userId: 'user-1',
|
||||
providerId: 'openai-compatible:node-1',
|
||||
modelId: 'gpt-4.1-mini',
|
||||
messages: [{ role: 'user', content: 'hello' }],
|
||||
temperature: 0.2,
|
||||
})
|
||||
|
||||
expect(completion.choices[0]?.message?.content).toEqual([
|
||||
{ type: 'reasoning', text: 'think-' },
|
||||
{ type: 'text', text: 'hello' },
|
||||
])
|
||||
expect(completion.usage?.prompt_tokens).toBe(12)
|
||||
expect(completion.usage?.completion_tokens).toBe(7)
|
||||
const firstCall = fetchMock.mock.calls[0] as unknown[] | undefined
|
||||
expect(String(firstCall?.[0])).toBe('https://compat.example.com/v1/responses')
|
||||
})
|
||||
|
||||
it('throws status-bearing error when responses endpoint fails', async () => {
|
||||
const fetchMock = vi.fn(async () => new Response('not supported', { status: 404 }))
|
||||
vi.stubGlobal('fetch', fetchMock)
|
||||
|
||||
await expect(
|
||||
runOpenAICompatResponsesCompletion({
|
||||
userId: 'user-1',
|
||||
providerId: 'openai-compatible:node-1',
|
||||
modelId: 'gpt-4.1-mini',
|
||||
messages: [{ role: 'user', content: 'hello' }],
|
||||
temperature: 0.2,
|
||||
}),
|
||||
).rejects.toThrow('OPENAI_COMPAT_RESPONSES_FAILED: 404')
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user