from pathlib import Path ROOT = Path(__file__).resolve().parents[1] APP = (ROOT / "app" / "web_app_fastapi.py").read_text(encoding="utf-8") INDEX = (ROOT / "app" / "templates" / "index.html").read_text(encoding="utf-8") ADMIN = (ROOT / "app" / "templates" / "admin_tools.html").read_text(encoding="utf-8") COMPOSE = (ROOT / "docker-compose.yml").read_text(encoding="utf-8") def test_upload_endpoints_accept_profile_id_and_keep_os_type(): assert APP.count("profile_id: Optional[str] = Form(None)") >= 3 assert "resolve_audit_profile(os_type=os_type, profile_id=profile_id)" in APP assert '"os_type": os_type' in APP def test_v2_registry_routes_and_admin_mutations_exist(): for route in [ "/api/v2/registry", "/api/v2/profiles/active", "/api/v2/admin/categories", "/api/v2/admin/components", "/api/v2/admin/profiles", "/versions/{version}/activate", "/rollback", ]: assert route in APP assert "_admin_or_403(request)" in APP def test_audit_form_supports_category_component_profile_selection(): assert 'id="profile_category"' in INDEX assert 'id="profile_component"' in INDEX assert 'name="profile_id"' in INDEX assert "refreshComponents" in INDEX assert "refreshProfiles" in INDEX def test_admin_ui_supports_registry_version_lifecycle(): assert "Registry Category → Component → Profile → Version" in ADMIN assert "registry_upload_version_v2" in ADMIN assert "registry_activate_v2" in ADMIN assert "registry_rollback_v2" in ADMIN def test_registry_has_dedicated_persistent_mount(): assert "./registry:/app/registry" in COMPOSE assert "AUDIT_REGISTRY_ROOT=/app/registry" in COMPOSE