87 lines
2.8 KiB
Python
87 lines
2.8 KiB
Python
import unittest
|
|
|
|
from fastapi.testclient import TestClient
|
|
|
|
from app.main import app
|
|
|
|
|
|
class ManagementSurfaceTests(unittest.TestCase):
|
|
def test_root_redirects_to_admin_application(self) -> None:
|
|
response = TestClient(app).get("/", follow_redirects=False)
|
|
|
|
self.assertEqual(response.status_code, 307)
|
|
self.assertEqual(response.headers["location"], "/admin/")
|
|
|
|
def test_schema_routes_remain_available(self) -> None:
|
|
paths = {route.path for route in app.routes}
|
|
|
|
self.assertIn("/v1/admin/ontology-schemas", paths)
|
|
self.assertIn("/v1/admin/ontology-schemas/current", paths)
|
|
self.assertIn("/v1/admin/ontology-schemas/{schema_id}", paths)
|
|
|
|
def test_retired_management_apis_are_not_registered(self) -> None:
|
|
paths = {route.path for route in app.routes}
|
|
retired_prefixes = (
|
|
"/v1/admin/source-profiles",
|
|
"/v1/admin/batches",
|
|
"/v1/admin/conflicts",
|
|
"/v1/admin/entities",
|
|
"/v1/admin/evidence",
|
|
"/v1/admin/inventory",
|
|
"/v1/admin/treatment-history",
|
|
"/v1/admin/vocabulary",
|
|
"/v1/admin/aligner",
|
|
"/v1/admin/publish-jobs",
|
|
"/v1/admin/acquisition-tasks",
|
|
"/v1/admin/manual-ingest",
|
|
"/v1/admin/audit",
|
|
"/v1/admin/audit-runs",
|
|
"/v1/admin/question-traces",
|
|
"/v1/admin/simulation-panel",
|
|
"/v1/admin/areas",
|
|
"/v1/admin/notifications",
|
|
"/v1/admin/agent-settings",
|
|
"/v1/admin/agent-call-logs",
|
|
"/v1/admin/roles",
|
|
"/v1/admin/capabilities",
|
|
"/v1/admin/permission-matrix",
|
|
)
|
|
|
|
for prefix in retired_prefixes:
|
|
self.assertFalse(
|
|
any(path == prefix or path.startswith(f"{prefix}/") for path in paths),
|
|
prefix,
|
|
)
|
|
|
|
for path in (
|
|
"/v1/admin/plaza/usage",
|
|
"/v1/admin/plaza/alerts",
|
|
"/v1/admin/users/{user_id}/areas",
|
|
):
|
|
self.assertNotIn(path, paths)
|
|
|
|
def test_retained_core_routes_remain_registered(self) -> None:
|
|
paths = {route.path for route in app.routes}
|
|
|
|
for path in (
|
|
"/v1/admin/plaza/overview",
|
|
"/v1/admin/plaza/user-query",
|
|
"/v1/admin/graph/overview",
|
|
"/v1/admin/users",
|
|
"/v1/admin/ocr/passport",
|
|
):
|
|
self.assertIn(path, paths)
|
|
|
|
user_detail_methods = {
|
|
method
|
|
for route in app.routes
|
|
if route.path == "/v1/admin/users/{user_id}"
|
|
for method in (route.methods or set())
|
|
}
|
|
self.assertIn("PATCH", user_detail_methods)
|
|
self.assertNotIn("DELETE", user_detail_methods)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|