studio / tests /test_ui_routing.py
Ava2lon's picture
Upload 213 files
99d5f49 verified
Raw
History Blame Contribute Delete
1.44 kB
from __future__ import annotations
import unittest
try:
import fastapi # noqa: F401
import gradio # noqa: F401
from fastapi.testclient import TestClient
UI_DEPENDENCIES_AVAILABLE = True
except ImportError:
UI_DEPENDENCIES_AVAILABLE = False
@unittest.skipUnless(UI_DEPENDENCIES_AVAILABLE, "FastAPI and Gradio are not installed")
class UIRoutingTests(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
from app import app
cls.client = TestClient(app)
def test_root_redirects_to_canonical_dashboard_url(self) -> None:
response = self.client.get("/", follow_redirects=False)
self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["location"], "/dashboard/")
def test_dashboard_html_uses_dashboard_root(self) -> None:
response = self.client.get("/dashboard/")
self.assertEqual(response.status_code, 200)
self.assertIn("/dashboard", response.text)
def test_mcp_discovery_reports_both_transports(self) -> None:
response = self.client.get("/mcp-health")
self.assertEqual(response.status_code, 200)
payload = response.json()
self.assertEqual(payload["custom_mcp_url"], "/mcp/")
self.assertEqual(payload["gradio_mcp_url"], "/dashboard/gradio_api/mcp/")
self.assertGreater(payload["custom_tool_count"], 0)
if __name__ == "__main__":
unittest.main()