Spaces:
Configuration error
Configuration error
import json | |
import os | |
import sys | |
import pytest | |
from fastapi.testclient import TestClient | |
sys.path.insert( | |
0, os.path.abspath("../../..") | |
) # Adds the parent directory to the system path | |
from unittest.mock import MagicMock | |
from litellm.proxy.route_llm_request import route_request | |
async def test_route_request_dynamic_credentials(route_type): | |
data = { | |
"model": "openai/gpt-4o-mini-2024-07-18", | |
"api_key": "my-bad-key", | |
"api_base": "https://api.openai.com/v1 ", | |
} | |
llm_router = MagicMock() | |
# Ensure that the dynamic method exists on the llm_router mock. | |
getattr(llm_router, route_type).return_value = "fake_response" | |
response = await route_request(data, llm_router, None, route_type) | |
# Optionally verify the response if needed: | |
assert response == "fake_response" | |
# Now assert that the dynamic method was called once with the expected kwargs. | |
getattr(llm_router, route_type).assert_called_once_with(**data) | |
async def test_route_request_no_model_required(): | |
"""Test route types that don't require model parameter""" | |
test_cases = ["amoderation", "aget_responses", "adelete_responses"] | |
for route_type in test_cases: | |
# Test data without model parameter | |
data = {"input": "test input", "api_key": "test-key"} | |
llm_router = MagicMock() | |
getattr(llm_router, route_type).return_value = "fake_response" | |
response = await route_request(data, llm_router, None, route_type) | |
# Verify response | |
assert response == "fake_response" | |
# Verify the method was called with correct parameters | |
getattr(llm_router, route_type).assert_called_once_with(**data) | |
# Reset mock for next iteration | |
llm_router.reset_mock() | |
async def test_route_request_no_model_required_with_router_settings(): | |
"""Test route types that don't require model parameter with router settings""" | |
test_cases = ["amoderation", "aget_responses", "adelete_responses"] | |
for route_type in test_cases: | |
# Test data with model parameter (it will be ignored for these route types) | |
data = { | |
"input": "test input", | |
"model": "test-model", # Include dummy model to avoid KeyError | |
} | |
llm_router = MagicMock() | |
# Set up router settings | |
llm_router.router_general_settings.pass_through_all_models = False | |
llm_router.default_deployment = None | |
llm_router.pattern_router.patterns = [] | |
llm_router.model_names = [] # Empty model names list | |
llm_router.get_model_ids.return_value = [] # Empty model IDs | |
llm_router.model_group_alias = None # No model group alias | |
# Mock the async route call | |
getattr(llm_router, route_type).return_value = "fake_response" | |
# Run the request | |
response = await route_request(data, llm_router, None, route_type) | |
# Assert the mocked method was called with expected input | |
assert response == "fake_response" | |
getattr(llm_router, route_type).assert_called_once_with(**data) | |
# Reset the mock for the next route | |
llm_router.reset_mock() | |