Files
Genarrative/apps/ai-game-creator-shell/tests/agentRuntimeModel.test.ts
T
kdletters 6f7ccc2832 继续收敛遗留错误正文
外部 MCP HTTP 错误返回状态、错误码和中文正文

认证、素材上传和发行发布保留上游 401/403/5xx 详情

精确脱敏 Direct 错误并标记旧历史缺失正文

补充回归测试、诊断文档和真实客户端启动验证
2026-10-05 20:03:04 +08:00

52 lines
1.9 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { describe, expect, it } from 'vitest';
import { projectRuntimeVisibleError } from '../src/features/agent-runtime/model';
describe('Agent Runtime 错误正文', () => {
it('终态未知时保留连接层的具体 detail', () => {
const text = projectRuntimeVisibleError(
'codex-app-server-terminal-unknown: HTTP 503 upstream overloaded;https://provider.example/private',
'陶泥儿智能创作',
);
expect(text).toContain('HTTP 503');
expect(text).toContain('upstream overloaded');
expect(text).not.toContain('provider.example');
});
it('原生分类映射不吞掉后续的状态和错误正文', () => {
const text = projectRuntimeVisibleError(
'provider failed kind=codex-app-server-unauthorized status=401 detail=invalid token',
'陶泥儿智能创作',
);
expect(text).toContain('鉴权失败');
expect(text).toContain('status=401');
expect(text).toContain('detail=invalid token');
});
it('正文带敏感字段时只替换敏感值,不丢掉上游状态和原因', () => {
const text = projectRuntimeVisibleError(
'direct-codex-error: HTTP 502 upstream overloaded;authorization=Bearer provider-secret;https://provider.example/private;C:\\Users\\demo\\game',
'陶泥儿智能创作',
);
expect(text).toContain('HTTP 502');
expect(text).toContain('upstream overloaded');
expect(text).toContain('[已隐藏凭据]');
expect(text).not.toContain('provider-secret');
expect(text).not.toContain('provider.example');
expect(text).not.toContain('C:\\Users\\demo');
});
it('已知分类但宿主没有正文时明确标记正文缺失', () => {
const text = projectRuntimeVisibleError(
'kind=codex-app-server-unauthorized',
'陶泥儿智能创作',
);
expect(text).toContain('鉴权失败');
expect(text).toContain('宿主未提供具体错误正文');
});
});