89 lines
2.7 KiB
Python
89 lines
2.7 KiB
Python
"""Tests for exception classes."""
|
|
|
|
import pytest
|
|
|
|
from src.exceptions import (
|
|
BackendUnavailableError,
|
|
InferenceError,
|
|
InferenceTimeoutError,
|
|
ModelNotFoundError,
|
|
ValidationError,
|
|
)
|
|
|
|
|
|
class TestInferenceError:
|
|
"""Test base InferenceError."""
|
|
|
|
def test_basic_error(self):
|
|
"""Test basic error creation."""
|
|
error = InferenceError("Test error")
|
|
assert error.message == "Test error"
|
|
assert error.error_code == "inference_error"
|
|
assert error.status_code == 500
|
|
|
|
def test_error_with_request_id(self):
|
|
"""Test error with request_id."""
|
|
error = InferenceError("Test error", request_id="req-123")
|
|
assert error.request_id == "req-123"
|
|
|
|
def test_to_openai_error(self):
|
|
"""Test OpenAI error format."""
|
|
error = InferenceError("Test error", request_id="req-123")
|
|
result = error.to_openai_error()
|
|
|
|
assert "error" in result
|
|
assert result["error"]["message"] == "Test error"
|
|
assert result["error"]["type"] == "inference_error"
|
|
assert result["error"]["request_id"] == "req-123"
|
|
|
|
|
|
class TestValidationError:
|
|
"""Test ValidationError."""
|
|
|
|
def test_validation_error(self):
|
|
"""Test validation error creation."""
|
|
error = ValidationError("Invalid parameter", param="temperature")
|
|
assert error.status_code == 400
|
|
assert error.error_code == "invalid_request_error"
|
|
assert error.param == "temperature"
|
|
|
|
def test_to_openai_error_with_param(self):
|
|
"""Test OpenAI format includes param."""
|
|
error = ValidationError("Invalid", param="max_tokens")
|
|
result = error.to_openai_error()
|
|
|
|
assert result["error"]["param"] == "max_tokens"
|
|
|
|
|
|
class TestModelNotFoundError:
|
|
"""Test ModelNotFoundError."""
|
|
|
|
def test_model_not_found(self):
|
|
"""Test model not found error."""
|
|
error = ModelNotFoundError(model="unknown-model")
|
|
assert error.status_code == 404
|
|
assert "unknown-model" in error.message
|
|
assert error.model == "unknown-model"
|
|
|
|
|
|
class TestBackendUnavailableError:
|
|
"""Test BackendUnavailableError."""
|
|
|
|
def test_backend_unavailable(self):
|
|
"""Test backend unavailable error."""
|
|
error = BackendUnavailableError(backend="ollama", reason="Connection refused")
|
|
assert error.status_code == 503
|
|
assert "ollama" in error.message
|
|
assert error.backend == "ollama"
|
|
|
|
|
|
class TestInferenceTimeoutError:
|
|
"""Test InferenceTimeoutError."""
|
|
|
|
def test_timeout_error(self):
|
|
"""Test timeout error."""
|
|
error = InferenceTimeoutError(timeout_ms=5000)
|
|
assert error.status_code == 504
|
|
assert "5000" in error.message
|
|
assert error.timeout_ms == 5000
|