mirror of
https://github.com/Melorise/TamaASR.git
synced 2026-11-07 14:39:32 +00:00
拆分后端定义、注册表、DOM 适配器和 sandbox preload,统一千问与元宝的就绪、登录和完整文本上报契约。 AI-assisted-by: Codex AI-model: gpt-5.6-sol AI-reasoning-effort: medium Co-authored-by: Codex <codex@openai.com>
21 lines
979 B
TypeScript
21 lines
979 B
TypeScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
import { backendOwnsUrl } from '../src/backends/contracts';
|
|
import { getBackend, listBackends, requireBackend } from '../src/backends/registry';
|
|
|
|
test('后端注册表包含千问和元宝且 ID 唯一', () => {
|
|
const backends = listBackends();
|
|
assert.deepEqual(backends.map(({ id }) => id), ['qianwen', 'yuanbao']);
|
|
assert.equal(new Set(backends.map(({ id }) => id)).size, backends.length);
|
|
assert.equal(getBackend('qianwen')?.label, '千问');
|
|
assert.equal(getBackend('missing'), undefined);
|
|
assert.throws(() => requireBackend('missing'), /未知后端/);
|
|
});
|
|
|
|
test('后端 URL 校验使用精确 origin', () => {
|
|
const qianwen = requireBackend('qianwen');
|
|
assert.equal(backendOwnsUrl(qianwen, 'https://www.qianwen.com/chat/1'), true);
|
|
assert.equal(backendOwnsUrl(qianwen, 'https://www.qianwen.com.evil.example/'), false);
|
|
assert.equal(backendOwnsUrl(qianwen, 'not a url'), false);
|
|
});
|