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()