fix(test): add auth overrides to file endpoint tests that return 500

The test_target_storage tests were getting 500 because the FastAPI auth
dependency wasn't overridden. Added app.dependency_overrides for proper
auth bypass in test environment.

Co-authored-by: Ishaan Jaff <ishaan-jaff@users.noreply.github.com>
This commit is contained in:
Cursor Agent 2026-02-28 15:39:40 +00:00
parent 11ba7f06a6
commit 4e5152bbff

View file

@ -233,11 +233,18 @@ def test_target_storage_invokes_storage_backend(
""" """
Ensure target_storage is parsed and invokes the storage backend service. Ensure target_storage is parsed and invokes the storage backend service.
""" """
from litellm.proxy._types import LitellmUserRoles
import litellm.proxy.proxy_server as ps
monkeypatch.setattr("litellm.proxy.proxy_server.master_key", None) monkeypatch.setattr("litellm.proxy.proxy_server.master_key", None)
monkeypatch.setattr("litellm.proxy.proxy_server.prisma_client", None) monkeypatch.setattr("litellm.proxy.proxy_server.prisma_client", None)
monkeypatch.setattr("litellm.proxy.proxy_server.llm_router", llm_router) monkeypatch.setattr("litellm.proxy.proxy_server.llm_router", llm_router)
setup_proxy_logging_object(monkeypatch, llm_router) setup_proxy_logging_object(monkeypatch, llm_router)
app.dependency_overrides[ps.user_api_key_auth] = lambda: UserAPIKeyAuth(
user_role=LitellmUserRoles.PROXY_ADMIN, user_id="test-user"
)
async_mock = mocker.AsyncMock( async_mock = mocker.AsyncMock(
return_value=OpenAIFileObject( return_value=OpenAIFileObject(
id="file-test", id="file-test",
@ -254,25 +261,28 @@ def test_target_storage_invokes_storage_backend(
new=async_mock, new=async_mock,
) )
test_file_content = b"abc" try:
test_file = ("abc.txt", test_file_content, "text/plain") test_file_content = b"abc"
test_file = ("abc.txt", test_file_content, "text/plain")
response = client.post( response = client.post(
"/v1/files", "/v1/files",
files={"file": test_file}, files={"file": test_file},
data={ data={
"purpose": "user_data", "purpose": "user_data",
"target_storage": "azure_storage", "target_storage": "azure_storage",
}, },
headers={"Authorization": "Bearer test-key"}, headers={"Authorization": "Bearer test-key"},
) )
assert response.status_code == 200 assert response.status_code == 200, response.text
async_mock.assert_awaited_once() async_mock.assert_awaited_once()
called_kwargs = async_mock.call_args.kwargs called_kwargs = async_mock.call_args.kwargs
assert called_kwargs["target_storage"] == "azure_storage" assert called_kwargs["target_storage"] == "azure_storage"
assert called_kwargs["target_model_names"] == [] assert called_kwargs["target_model_names"] == []
assert called_kwargs["purpose"] == "user_data" assert called_kwargs["purpose"] == "user_data"
finally:
app.dependency_overrides.pop(ps.user_api_key_auth, None)
@pytest.mark.flaky(retries=3, delay=2) @pytest.mark.flaky(retries=3, delay=2)
@ -282,11 +292,18 @@ def test_target_storage_with_target_models(
""" """
Ensure target_storage and target_model_names are parsed and passed through. Ensure target_storage and target_model_names are parsed and passed through.
""" """
from litellm.proxy._types import LitellmUserRoles
import litellm.proxy.proxy_server as ps
monkeypatch.setattr("litellm.proxy.proxy_server.master_key", None) monkeypatch.setattr("litellm.proxy.proxy_server.master_key", None)
monkeypatch.setattr("litellm.proxy.proxy_server.prisma_client", None) monkeypatch.setattr("litellm.proxy.proxy_server.prisma_client", None)
monkeypatch.setattr("litellm.proxy.proxy_server.llm_router", llm_router) monkeypatch.setattr("litellm.proxy.proxy_server.llm_router", llm_router)
setup_proxy_logging_object(monkeypatch, llm_router) setup_proxy_logging_object(monkeypatch, llm_router)
app.dependency_overrides[ps.user_api_key_auth] = lambda: UserAPIKeyAuth(
user_role=LitellmUserRoles.PROXY_ADMIN, user_id="test-user"
)
async_mock = mocker.AsyncMock( async_mock = mocker.AsyncMock(
return_value=OpenAIFileObject( return_value=OpenAIFileObject(
id="file-test", id="file-test",
@ -303,26 +320,29 @@ def test_target_storage_with_target_models(
new=async_mock, new=async_mock,
) )
test_file_content = b"abc" try:
test_file = ("abc.txt", test_file_content, "text/plain") test_file_content = b"abc"
test_file = ("abc.txt", test_file_content, "text/plain")
response = client.post( response = client.post(
"/v1/files", "/v1/files",
files={"file": test_file}, files={"file": test_file},
data={ data={
"purpose": "user_data", "purpose": "user_data",
"target_storage": "azure_storage", "target_storage": "azure_storage",
"target_model_names": "gemini-2.0-flash", "target_model_names": "gemini-2.0-flash",
}, },
headers={"Authorization": "Bearer test-key"}, headers={"Authorization": "Bearer test-key"},
) )
assert response.status_code == 200 assert response.status_code == 200, response.text
async_mock.assert_awaited_once() async_mock.assert_awaited_once()
called_kwargs = async_mock.call_args.kwargs called_kwargs = async_mock.call_args.kwargs
assert called_kwargs["target_storage"] == "azure_storage" assert called_kwargs["target_storage"] == "azure_storage"
assert called_kwargs["target_model_names"] == ["gemini-2.0-flash"] assert called_kwargs["target_model_names"] == ["gemini-2.0-flash"]
assert called_kwargs["purpose"] == "user_data" assert called_kwargs["purpose"] == "user_data"
finally:
app.dependency_overrides.pop(ps.user_api_key_auth, None)
@pytest.mark.skip(reason="mock respx fails on ci/cd - unclear why") @pytest.mark.skip(reason="mock respx fails on ci/cd - unclear why")