71 lines
2.4 KiB
TypeScript
71 lines
2.4 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
|
|
const resolveConfigMock = vi.hoisted(() => vi.fn(async () => ({
|
|
providerId: 'openai-compatible:33331fb0-2806-4da6-85ff-cd2433b587d0',
|
|
baseUrl: 'https://compat.example.com/v1',
|
|
apiKey: 'sk-test',
|
|
})))
|
|
|
|
vi.mock('@/lib/model-gateway/openai-compat/common', () => ({
|
|
resolveOpenAICompatClientConfig: resolveConfigMock,
|
|
}))
|
|
|
|
import { generateVideoViaOpenAICompatTemplate } from '@/lib/model-gateway/openai-compat/template-video'
|
|
|
|
describe('openai-compat template video externalId', () => {
|
|
beforeEach(() => {
|
|
vi.clearAllMocks()
|
|
})
|
|
|
|
it('encodes compact modelId token for OCOMPAT externalId', async () => {
|
|
globalThis.fetch = vi.fn(async () => new Response(JSON.stringify({
|
|
id: 'veo3.1-fast:1772734762-6TuDIS8Vvr',
|
|
status: 'pending',
|
|
}), { status: 200 })) as unknown as typeof fetch
|
|
|
|
const result = await generateVideoViaOpenAICompatTemplate({
|
|
userId: 'user-1',
|
|
providerId: 'openai-compatible:33331fb0-2806-4da6-85ff-cd2433b587d0',
|
|
modelId: 'veo3.1-fast',
|
|
modelKey: 'openai-compatible:33331fb0-2806-4da6-85ff-cd2433b587d0::veo3.1-fast',
|
|
imageUrl: 'https://example.com/seed.png',
|
|
prompt: 'animate this image',
|
|
profile: 'openai-compatible',
|
|
template: {
|
|
version: 1,
|
|
mediaType: 'video',
|
|
mode: 'async',
|
|
create: {
|
|
method: 'POST',
|
|
path: '/video/create',
|
|
bodyTemplate: {
|
|
model: '{{model}}',
|
|
prompt: '{{prompt}}',
|
|
},
|
|
},
|
|
status: {
|
|
method: 'GET',
|
|
path: '/video/query?id={{task_id}}',
|
|
},
|
|
response: {
|
|
taskIdPath: '$.id',
|
|
statusPath: '$.status',
|
|
},
|
|
polling: {
|
|
intervalMs: 5000,
|
|
timeoutMs: 600000,
|
|
doneStates: ['completed'],
|
|
failStates: ['failed'],
|
|
},
|
|
},
|
|
})
|
|
|
|
expect(result.success).toBe(true)
|
|
expect(result.async).toBe(true)
|
|
expect(result.externalId).toContain(':u_33331fb0-2806-4da6-85ff-cd2433b587d0:')
|
|
expect(result.externalId).toContain(`:${Buffer.from('veo3.1-fast', 'utf8').toString('base64url')}:`)
|
|
expect(result.externalId).not.toContain(Buffer.from('openai-compatible:33331fb0-2806-4da6-85ff-cd2433b587d0::veo3.1-fast', 'utf8').toString('base64url'))
|
|
expect(result.externalId!.length).toBeLessThanOrEqual(128)
|
|
})
|
|
})
|