This commit is contained in:
SteeveCrypto 2026-10-21 03:36:32 +00:00 • committed by GitHub
commit 2a1cf5bad9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 35 additions and 0 deletions

View file

@ -575,6 +575,7 @@ class LiteLLMRoutes(enum.Enum):
"/model_group/info",
"/health",
"/health/services",
"/health/license",
"/key/list",
"/user/filter/ui",
"/models",

View file

@ -149,3 +149,37 @@ def test_v2_user_info_route_access():
valid_token=valid_token,
request_data={},
)
def test_health_license_route_in_info_routes():
"""Non-admins hit /health/license from the dashboard sidebar; it must be an info route.
Regression for https://github.com/BerriAI/litellm/issues/46198 — without this,
internal_user_viewer page loads raise admin-only denials that flood ERROR logs.
"""
assert "/health/license" in LiteLLMRoutes.info_routes.value
assert RouteChecks.is_info_route("/health/license") is True
def test_internal_user_viewer_allowed_health_license():
"""internal_user_viewer must be able to call GET /health/license without admin denial."""
user_obj = LiteLLM_UserTable(
user_id="viewer_user",
user_email="viewer@example.com",
user_role=LitellmUserRoles.INTERNAL_USER_VIEW_ONLY.value,
)
valid_token = UserAPIKeyAuth(user_id="viewer_user")
request = MagicMock(spec=Request)
request.query_params = {}
# Must not raise — license metadata is non-sensitive and the dashboard polls it.
result = RouteChecks.non_proxy_admin_allowed_routes_check(
user_obj=user_obj,
_user_role=LitellmUserRoles.INTERNAL_USER_VIEW_ONLY.value,
route="/health/license",
request=request,
valid_token=valid_token,
request_data={},
)
assert result is None