import pytest from fastapi import HTTPException from jira_webhook_llm import app from llm.models import JiraWebhookPayload def test_error_handling_middleware(test_client, mock_jira_payload): # Test 404 error handling response = test_client.post("/nonexistent-endpoint", json={}) assert response.status_code == 404 assert "error_id" in response.json() # Test validation error handling invalid_payload = mock_jira_payload.copy() invalid_payload.pop("issueKey") response = test_client.post("/jira-webhook", json=invalid_payload) assert response.status_code == 422 assert "details" in response.json() def test_webhook_handler(test_client, mock_jira_payload): # Test successful webhook handling response = test_client.post("/jira-webhook", json=mock_jira_payload) assert response.status_code == 200 assert "response" in response.json() def test_llm_test_endpoint(test_client): # Test LLM test endpoint response = test_client.post("/test-llm") assert response.status_code == 200 assert "response" in response.json() def test_retry_decorator(): # Test retry decorator functionality @app.retry(max_retries=3) async def failing_function(): raise Exception("Test error") with pytest.raises(Exception): failing_function()