2.7 KiB
2.7 KiB
本地 Mock SaaS C 门禁证据(v0.1)
范围
本证据只证明项目内 F01/F07 契约与本地 Mock 的端到端交互。未访问真实 SaaS、management、云资源、供应商或 SIP 线路;未发起通话、未上传录音,也未验证外部兼容性。contracts/upstream/v1/ 仍是当前外部运行基线。本地通过不代表外部签收或生产验收。
Mock 交互
TestLocalDispatcherMockSaaSEndToEndWithOutboxRecovery 使用本地 HTTP Mock、临时 SQLite 和本地 RabbitMQ:
- Dispatcher 使用
X-DISPATCHER-id与X-DISPATCHER-SECRET-KEY请求四个只读资源:GET /internal/v1/dispatcher/sipGET /internal/v1/dispatcher/tasksGET /internal/v1/dispatcher/task/task-mockGET /internal/v1/dispatcher/tenant/tenant-id-mock/quota
- SaaS Mock 预先创建并绑定其所有的 task/result 队列。测试发布 persistent
call.execute;Dispatcher 消费后持久化命令与command.resultoutbox。 - 测试暂时删除 SaaS-owned result queue,确认发布失败并保留 outbox;恢复队列后,Dispatcher 重试并将相同回执送达 Mock。
- 测试使用本地示例构造 synthetic
call.result,并核对它引用已接纳的command_id、execution_id、task 和租户;Mock 收到完整事件。重复相同事件幂等,执行 ID 不匹配时拒绝。
当前 C 切片只验证配置读取、命令收件/回执及最终结果的持久化交付;不会启动真实执行,也不调用 Asterisk。call.result 中的转写和 OSS 对象均为示例数据,不对应真实录音或上传。pause/resume/stop 的项目内 Schema 与正反例由合同验证器检查;其运行时控制和队列排空属于后续 F03,不计入本次运行时 E2E。
契约与验证结果
python3 scripts/validate-local-contracts.py:4 个项目内 Schema 有效;正例分别为 config-read 17、task-discovery 13、command-next 6、call-result 4;每类 Schema 的负例均按预期拒绝;source 与 18 项产物共 19 个 SHA-256 文件通过。bash scripts/check-contracts.sh:上游 v1 契约基线、项目内 Schema/示例及 Go 合同测试通过。go test ./internal/configread ./internal/dispatcher ./internal/store ./internal/mq:通过,覆盖配置读取失败清除旧快照、命令过期/白名单拒绝/窗口拒绝、重复命令和最终结果关联。bash scripts/mq-integration-local.sh:通过;本地 RabbitMQ 集成测试覆盖 Mock 消息发布、result queue 暂不可用后的 outbox 恢复以及最终事件交付。git diff --check:通过。
go vet、go test -race、完整构建、模块覆盖率及 F02–F09 的验收仍待后续工作包验证。本证据不宣称这些检查已通过。