Files
Aether/tests/services/usage/test_error_classifier.py

28 lines
1.1 KiB
Python
Raw Normal View History

import pytest
from src.core.enums import ErrorCategory
from src.services.usage.error_classifier import classify_error
@pytest.mark.parametrize(
"status_code,error_message,status,expected",
[
(429, None, None, ErrorCategory.RATE_LIMIT),
(401, None, None, ErrorCategory.AUTH),
(404, None, None, ErrorCategory.NOT_FOUND),
(None, "maximum context length exceeded", None, ErrorCategory.CONTEXT_LENGTH),
(None, "content_filter triggered", None, ErrorCategory.CONTENT_FILTER),
(None, "rate limit reached", None, ErrorCategory.RATE_LIMIT),
(None, "request timeout", None, ErrorCategory.TIMEOUT),
(None, "connection reset by peer", None, ErrorCategory.NETWORK),
(500, None, None, ErrorCategory.SERVER_ERROR),
(400, None, None, ErrorCategory.INVALID_REQUEST),
(200, None, "cancelled", ErrorCategory.CANCELLED),
(None, None, None, ErrorCategory.UNKNOWN),
],
)
def test_classify_error(
status_code: int | None, error_message: str | None, status: str | None, expected: ErrorCategory
) -> None:
assert classify_error(status_code, error_message, status) == expected