feat: initial commit
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
import io
|
||||
import unittest
|
||||
|
||||
try:
|
||||
from app.main import STATE, app
|
||||
except ModuleNotFoundError as exc: # pragma: no cover
|
||||
STATE = {}
|
||||
app = None
|
||||
_IMPORT_ERR = exc
|
||||
else:
|
||||
_IMPORT_ERR = None
|
||||
|
||||
|
||||
def _sample_csv_bytes() -> bytes:
|
||||
header = ",".join(
|
||||
[
|
||||
"id",
|
||||
"name",
|
||||
"depth",
|
||||
"mimeType",
|
||||
"modifiedTime",
|
||||
"size",
|
||||
"owners.0.emailAddress",
|
||||
"owners.0.displayName",
|
||||
"path.0",
|
||||
"sharingUser.emailAddress",
|
||||
"lastModifyingUser.emailAddress",
|
||||
"permission.type",
|
||||
"permission.role",
|
||||
"permission.emailAddress",
|
||||
"permission.domain",
|
||||
"permission.allowFileDiscovery",
|
||||
"permission.id",
|
||||
"permission.deleted",
|
||||
]
|
||||
)
|
||||
row = ",".join(
|
||||
[
|
||||
"file-1",
|
||||
"doc.txt",
|
||||
"2",
|
||||
"text/plain",
|
||||
"2026-02-19T10:00:00Z",
|
||||
"128",
|
||||
"owner@example.com",
|
||||
"Owner",
|
||||
"My Drive/docs/doc.txt",
|
||||
"owner@example.com",
|
||||
"owner@example.com",
|
||||
"user",
|
||||
"owner",
|
||||
"owner@example.com",
|
||||
"",
|
||||
"false",
|
||||
"perm-1",
|
||||
"false",
|
||||
]
|
||||
)
|
||||
return f"{header}\n{row}\n".encode("utf-8")
|
||||
|
||||
|
||||
class UploadFlowE2ETest(unittest.TestCase):
|
||||
@unittest.skipIf(app is None, f"Flask runtime unavailable: {_IMPORT_ERR}")
|
||||
def test_upload_renders_versioned_explorer_and_operational_panel(self) -> None:
|
||||
client = app.test_client()
|
||||
res = client.post(
|
||||
"/upload",
|
||||
data={"csv_file": (io.BytesIO(_sample_csv_bytes()), "sample.csv")},
|
||||
content_type="multipart/form-data",
|
||||
follow_redirects=False,
|
||||
)
|
||||
self.assertEqual(res.status_code, 302)
|
||||
self.assertEqual(res.headers.get("Location"), "/")
|
||||
|
||||
index_html = client.get("/").get_data(as_text=True)
|
||||
self.assertIn("Build ID:", index_html)
|
||||
self.assertIn("Operational:", index_html)
|
||||
self.assertIn("Processing time:", index_html)
|
||||
self.assertIn("explorer.html?v=", index_html)
|
||||
|
||||
job = STATE.get("last_job") or {}
|
||||
self.assertTrue(job.get("job_id"))
|
||||
self.assertTrue(job.get("build_id"))
|
||||
|
||||
explorer = client.get(f"/data/{job['job_id']}/explorer.html").get_data(as_text=True)
|
||||
self.assertIn("id=\"splitter1\"", explorer)
|
||||
self.assertIn("id=\"splitter2\"", explorer)
|
||||
self.assertIn("copy-row-path", explorer)
|
||||
self.assertIn("Copy Visible Paths", explorer)
|
||||
self.assertIn("const MATRIX_BATCH", explorer)
|
||||
self.assertIn("Global Security Score", explorer)
|
||||
self.assertIn("data-risk=\"external\"", explorer)
|
||||
self.assertIn("let selectedItemId = \"\";", explorer)
|
||||
self.assertIn("function masterFocusRows()", explorer)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user