Spaces:
Configuration error
Configuration error
from unittest.mock import AsyncMock, patch | |
import pytest | |
from fastapi import FastAPI, HTTPException | |
from fastapi.testclient import TestClient | |
from litellm.proxy._types import ( | |
LiteLLM_BudgetTable, | |
LiteLLM_EndUserTable, | |
LitellmUserRoles, | |
) | |
from litellm.proxy.auth.user_api_key_auth import UserAPIKeyAuth | |
from litellm.proxy.management_endpoints.customer_endpoints import router | |
from litellm.proxy.proxy_server import ProxyException | |
app = FastAPI() | |
app.include_router(router) | |
client = TestClient(app) | |
def mock_prisma_client(): | |
with patch("litellm.proxy.proxy_server.prisma_client") as mock: | |
yield mock | |
def mock_user_api_key_auth(): | |
with patch("litellm.proxy.proxy_server.user_api_key_auth") as mock: | |
mock.return_value = UserAPIKeyAuth( | |
user_id="test-user", user_role=LitellmUserRoles.PROXY_ADMIN | |
) | |
yield mock | |
def test_update_customer_success(mock_prisma_client, mock_user_api_key_auth): | |
# Mock the database responses | |
mock_end_user = LiteLLM_EndUserTable( | |
user_id="test-user-1", alias="Test User", blocked=False | |
) | |
updated_mock_end_user = LiteLLM_EndUserTable( | |
user_id="test-user-1", alias="Updated Test User", blocked=False | |
) | |
# Mock the find_first response | |
mock_prisma_client.db.litellm_endusertable.find_first = AsyncMock( | |
return_value=mock_end_user | |
) | |
# Mock the update response | |
mock_prisma_client.db.litellm_endusertable.update = AsyncMock( | |
return_value=updated_mock_end_user | |
) | |
# Test data | |
test_data = {"user_id": "test-user-1", "alias": "Updated Test User"} | |
# Make the request | |
response = client.post( | |
"/customer/update", json=test_data, headers={"Authorization": "Bearer test-key"} | |
) | |
# Assert response | |
assert response.status_code == 200 | |
assert response.json()["user_id"] == "test-user-1" | |
assert response.json()["alias"] == "Updated Test User" | |
def test_update_customer_not_found(mock_prisma_client, mock_user_api_key_auth): | |
# Mock the database response to return None (user not found) | |
mock_prisma_client.db.litellm_endusertable.find_first = AsyncMock(return_value=None) | |
# Test data | |
test_data = {"user_id": "non-existent-user", "alias": "Test User"} | |
# Make the request | |
try: | |
response = client.post( | |
"/customer/update", | |
json=test_data, | |
headers={"Authorization": "Bearer test-key"}, | |
) | |
except Exception as e: | |
print(e, type(e)) | |
assert isinstance(e, ProxyException) | |
assert int(e.code) == 400 | |
assert "End User Id=non-existent-user does not exist in db" in e.message | |