"""'/admin/dashboard': real, never-fabricated per-section workspace counts.""" from __future__ import annotations from uuid import uuid4 from fastapi.testclient import TestClient from ragcore.api.v1.control.dependencies import get_control_application, get_principal from ragcore.application.authorization import AuthorizationService from ragcore.application.control.api import ControlPlaneApplication from ragcore.domain.authorization import Principal, PrincipalType from ragcore.domain.control import Application, KnowledgeSpace, Policy, Role, Workspace from ragcore.main import create_app class FakeControlRepository: def __init__(self, workspace: Workspace) -> None: self.workspace = workspace self.applications: list[Application] = [] self.spaces: list[KnowledgeSpace] = [] self.policies: list[Policy] = [] self.grants: list[object] = [] async def get_workspace(self, workspace_id: object) -> Workspace | None: return self.workspace if workspace_id == self.workspace.id else None async def list_applications(self, workspace_id: object) -> tuple[Application, ...]: return tuple(self.applications) async def list_spaces(self, workspace_id: object) -> tuple[KnowledgeSpace, ...]: return tuple(self.spaces) async def list_policies(self, workspace_id: object) -> tuple[Policy, ...]: return tuple(self.policies) async def list_grants(self, workspace_id: object) -> tuple[object, ...]: return tuple(self.grants) def _client(principal: Principal, repository: FakeControlRepository) -> TestClient: service = ControlPlaneApplication(repository, AuthorizationService()) app = create_app() app.dependency_overrides[get_principal] = lambda: principal app.dependency_overrides[get_control_application] = lambda: service return TestClient(app, raise_server_exceptions=False) def test_dashboard_requires_authentication() -> None: client = TestClient(create_app(), raise_server_exceptions=False) response = client.get("/admin/dashboard") assert response.status_code == 401 def test_dashboard_shows_real_counts_for_a_workspace_admin() -> None: workspace = Workspace(uuid4(), "Dash workspace", "dash-workspace") principal = Principal( uuid4(), workspace.id, PrincipalType.HUMAN, frozenset({Role.WORKSPACE_ADMIN}) ) repository = FakeControlRepository(workspace) repository.applications.append( workspace.create_application(id=uuid4(), name="Ingest", slug="ingest") ) client = _client(principal, repository) response = client.get("/admin/dashboard") assert response.status_code == 200 assert 'href="#main-content"' in response.text assert '