File size: 1,438 Bytes
cd6f98e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import pytest
from openai.error import InvalidRequestError, ServiceUnavailableError

from reworkd_platform.schemas.agent import ModelSettings
from reworkd_platform.web.api.agent.helpers import openai_error_handler
from reworkd_platform.web.api.errors import OpenAIError


async def act(*args, settings: ModelSettings = ModelSettings(), **kwargs):
    return await openai_error_handler(*args, settings=settings, **kwargs)


@pytest.mark.asyncio
async def test_service_unavailable_error():
    async def mock_service_unavailable_error():
        raise ServiceUnavailableError("Service Unavailable")

    with pytest.raises(OpenAIError):
        await act(mock_service_unavailable_error)


@pytest.mark.asyncio
@pytest.mark.parametrize(
    "settings,should_log",
    [
        (ModelSettings(custom_api_key="xyz"), False),
        (ModelSettings(custom_api_key=None), True),
    ],
)
async def test_should_log(settings, should_log):
    async def mock_invalid_request_error_model_access():
        raise InvalidRequestError(
            "The model: xyz does not exist or you do not have access to it.",
            param="model",
        )

    with pytest.raises(Exception) as exc_info:
        await openai_error_handler(
            mock_invalid_request_error_model_access, settings=settings
        )

    assert isinstance(exc_info.value, OpenAIError)
    error: OpenAIError = exc_info.value

    assert error.should_log == should_log