test: add web coverage and e2e tests

This commit is contained in:
hangshuo652
2026-09-05 15:25:53 +08:00
parent e5efb49dd4
commit f712b7b527
2 changed files with 298 additions and 0 deletions
+95
View File
@@ -0,0 +1,95 @@
"""FastAPI TestClient-based tests for accurate coverage measurement."""
from __future__ import annotations
import io, json, pytest
from fastapi.testclient import TestClient
from web.api import app
client = TestClient(app)
def test_index():
r = client.get("/")
assert r.status_code == 200
assert "verify" in r.text.lower()
def test_verify_422_empty():
r = client.post("/verify")
assert r.status_code == 422
def test_verify_202():
r = client.post("/verify",
files={
"copybook": ("t.cpy", b"x", "text/plain"),
"cobol_src": ("t.cbl", b"x", "text/plain"),
"java_src": ("t.java", b"x", "text/plain"),
"mapping": ("t.yaml", b"x", "text/plain"),
},
data={"runner": "native"})
assert r.status_code == 202
body = r.json()
assert "task_id" in body
return body["task_id"]
def test_verify_large_file_413():
r = client.post("/verify",
files={
"copybook": ("t.cpy", b"x", "text/plain"),
"cobol_src": ("t.cbl", b"x" * (10 * 1024 * 1024 + 1), "application/octet-stream"),
"java_src": ("t.java", b"x", "text/plain"),
"mapping": ("t.yaml", b"x", "text/plain"),
},
data={"runner": "native"})
assert r.status_code == 413
def test_status_404():
r = client.get("/status/nonexistent")
assert r.status_code == 404
def test_status_ok():
tid = test_verify_202()
r = client.get(f"/status/{tid}")
assert r.status_code == 200
body = r.json()
assert body["status"] in ("queued", "running", "done", "error")
def test_fields_404():
r = client.get("/fields/nonexistent")
assert r.status_code == 404
def test_fields_ok():
tid = test_verify_202()
r = client.get(f"/fields/{tid}")
assert r.status_code == 200
body = r.json()
assert "fields" in body
assert "debug" in body
assert "build_log" in body
def test_result_404():
r = client.get("/result/nonexistent")
assert r.status_code == 404
def test_result_page():
tid = test_verify_202()
r = client.get(f"/result/{tid}")
assert r.status_code == 200
assert tid in r.text
def test_static_css():
r = client.get("/static/style.css")
assert r.status_code == 200
def test_static_js():
r = client.get("/static/script.js")
assert r.status_code == 200