chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
import asyncio
|
||||
|
||||
import pytest
|
||||
from fastapi import HTTPException
|
||||
|
||||
from api.v1.ppt.endpoints import anthropic as anthropic_endpoint
|
||||
from api.v1.ppt.endpoints import google as google_endpoint
|
||||
from api.v1.ppt.endpoints import openai as openai_endpoint
|
||||
from utils.available_models import ModelAvailabilityError
|
||||
from utils.provider_error_messages import INVALID_API_KEY_MESSAGE
|
||||
|
||||
|
||||
def test_model_availability_error_maps_provider_client_errors_to_bad_request():
|
||||
error = ModelAvailabilityError(
|
||||
"OpenAI-compatible provider",
|
||||
"Incorrect API key provided.",
|
||||
provider_status_code=401,
|
||||
)
|
||||
|
||||
assert error.status_code == 400
|
||||
assert str(error) == INVALID_API_KEY_MESSAGE
|
||||
assert error.raw_message == "Incorrect API key provided."
|
||||
|
||||
|
||||
def test_model_availability_error_keeps_provider_server_errors_internal():
|
||||
error = ModelAvailabilityError(
|
||||
"OpenAI-compatible provider",
|
||||
"Provider unavailable.",
|
||||
provider_status_code=503,
|
||||
)
|
||||
|
||||
assert error.status_code == 500
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("endpoint_module", "list_function_name", "args"),
|
||||
[
|
||||
(
|
||||
openai_endpoint,
|
||||
"list_available_openai_compatible_models",
|
||||
("https://api.openai.com/v1", "bad-key"),
|
||||
),
|
||||
(google_endpoint, "list_available_google_models", ("bad-key",)),
|
||||
(anthropic_endpoint, "list_available_anthropic_models", ("bad-key",)),
|
||||
],
|
||||
)
|
||||
def test_model_availability_endpoints_return_400_for_provider_validation_errors(
|
||||
monkeypatch, endpoint_module, list_function_name, args
|
||||
):
|
||||
async def fail_model_validation(*_args):
|
||||
raise ModelAvailabilityError(
|
||||
"Provider",
|
||||
"Invalid API key.",
|
||||
provider_status_code=401,
|
||||
)
|
||||
|
||||
monkeypatch.setattr(endpoint_module, list_function_name, fail_model_validation)
|
||||
|
||||
with pytest.raises(HTTPException) as exc_info:
|
||||
asyncio.run(endpoint_module.get_available_models(*args))
|
||||
|
||||
assert exc_info.value.status_code == 400
|
||||
assert exc_info.value.detail == INVALID_API_KEY_MESSAGE
|
||||
Reference in New Issue
Block a user