fix: align Responses messages and video exports
This commit is contained in:
1 parent
e1e26772d9
commit
c818a09a49
10 files changed
+277
-18
No files matched your search
@@ -544,6 +544,43 @@ def test_task_material_zip_contains_ordered_evidence_and_reports(
|
||||
assert "1.1-all.zip" in response.headers["content-disposition"]
|
||||
|
||||
|
||||
def test_video_export_accepts_finalized_worker_trace_and_rejects_external_path(
|
||||
isolated, tmp_path, monkeypatch
|
||||
):
|
||||
job = isolated.jobs(service.create_batch(payload())["id"])[0]
|
||||
session_id = job["session_id"]
|
||||
recording_dir = reports.TRACES_PATH / f"web_123_{session_id[:8]}_PASS_2026-09-28"
|
||||
recording_dir.mkdir(parents=True)
|
||||
first = recording_dir / "recording.mp4"
|
||||
first.write_bytes(b"first segment")
|
||||
resumed = recording_dir / "resume_0001"
|
||||
resumed.mkdir()
|
||||
second = resumed / "recording.mp4"
|
||||
second.write_bytes(b"second segment")
|
||||
|
||||
repository = Mock()
|
||||
repository.get_video_recording_for_session.return_value = {"local_video_path": str(first)}
|
||||
repository.get_session_by_id.return_value = {"video_filepath": str(first)}
|
||||
monkeypatch.setattr(reports, "SessionRepository", lambda: repository)
|
||||
|
||||
archive_path = reports.export_session_media(session_id, "video")
|
||||
with zipfile.ZipFile(archive_path) as archive:
|
||||
names = archive.namelist()
|
||||
assert names == [
|
||||
"任务录屏/0001_web_123_" + session_id[:8] + "_PASS_2026-09-28_recording.mp4",
|
||||
"任务录屏/0002_resume_0001_recording.mp4",
|
||||
"文件清单.json",
|
||||
]
|
||||
assert archive.read(names[0]) == b"first segment"
|
||||
assert archive.read(names[1]) == b"second segment"
|
||||
|
||||
external = tmp_path / "outside" / "recording.mp4"
|
||||
external.parent.mkdir()
|
||||
external.write_bytes(b"unrelated")
|
||||
repository.get_video_recording_for_session.return_value = {"local_video_path": str(external)}
|
||||
assert reports.session_videos({"id": session_id}) == []
|
||||
|
||||
|
||||
def test_history_filters_all_persisted_rows_and_escapes_like(client, isolated):
|
||||
batch = service.create_batch(payload())
|
||||
first, second = isolated.jobs(batch["id"])
|
||||
|
||||
Reference in new issue
Block a user