SummarizerApp / tests /test_errors.py
ming
test: complete comprehensive test suite with 95% coverage
2aa2b79
raw
history blame
2.64 kB
"""
Tests for error handling functionality.
"""
import pytest
from unittest.mock import Mock, patch
from fastapi import FastAPI, Request
from app.core.errors import init_exception_handlers
class TestErrorHandlers:
"""Test error handling functionality."""
def test_init_exception_handlers(self):
"""Test that exception handlers are initialized."""
app = FastAPI()
init_exception_handlers(app)
# Verify exception handler was registered
assert Exception in app.exception_handlers
@pytest.mark.asyncio
async def test_unhandled_exception_handler(self):
"""Test unhandled exception handler."""
app = FastAPI()
init_exception_handlers(app)
# Create a mock request with request_id
request = Mock(spec=Request)
request.state.request_id = "test-request-id"
# Create a test exception
test_exception = Exception("Test error")
# Get the exception handler
handler = app.exception_handlers[Exception]
# Test the handler
response = await handler(request, test_exception)
# Verify response
assert response.status_code == 500
assert response.headers["content-type"] == "application/json"
# Verify response content
import json
content = json.loads(response.body.decode())
assert content["detail"] == "Internal server error"
assert content["code"] == "INTERNAL_ERROR"
assert content["request_id"] == "test-request-id"
@pytest.mark.asyncio
async def test_unhandled_exception_handler_no_request_id(self):
"""Test unhandled exception handler without request ID."""
app = FastAPI()
init_exception_handlers(app)
# Create a mock request without request_id
request = Mock(spec=Request)
request.state = Mock()
del request.state.request_id # Remove request_id
# Create a test exception
test_exception = Exception("Test error")
# Get the exception handler
handler = app.exception_handlers[Exception]
# Test the handler
response = await handler(request, test_exception)
# Verify response
assert response.status_code == 500
# Verify response content
import json
content = json.loads(response.body.decode())
assert content["detail"] == "Internal server error"
assert content["code"] == "INTERNAL_ERROR"
assert content["request_id"] is None