import pathlib ROOT=pathlib.Path(__file__).resolve().parents[1] def test_version_400(): assert (ROOT/'VERSION').read_text(encoding='utf-8').strip()=='4.6.20' def test_download_job_backend(): route=(ROOT/"routes"/"downloads.py").read_text(encoding="utf-8") svc=(ROOT/"services"/"download_jobs.py").read_text(encoding="utf-8") assert "/api/download/jobs" in route assert "/api/download/jobs/{job_id}/stream" in route assert 'headers["Range"]=req_range' in route assert "upstream server does not honor Range resume" in route assert "class DownloadJobStore" in svc def test_frontend_avoids_network_blob_buffering(): js=(ROOT/"static"/"js"/"app.js").read_text(encoding="utf-8") start=js.index("async function downloadWithProgress") end=js.index('document.addEventListener("click"',start) block=js[start:end] assert "chunks=[]" not in block assert "new Blob(chunks" not in block assert "/api/download/jobs" in block assert "restoreActiveDownloadJob" in block assert "HTTP Range" in block def test_ocean_range_export_uses_safe_range_tool(): ui=(ROOT/"ui_server.py").read_text(encoding="utf-8") start=ui.index("def _apply_ocean_export_defaults") block=ui[start:start+5000] assert "mcp_marine_marine_export_range" in block assert "start_date/end_date" in block assert "单次最多 31 天" in block assert "单日请求" in block