Add tests to verify error response format for endpoints.

main
KKlochko 1 month ago
parent cda672a84a
commit 487e5d00a1
Signed by: KKlochko
GPG Key ID: 572ECCD219BBA91B

@ -0,0 +1,81 @@
import pytest
from .conftest import BASE_URL
class TestErrorResponseFormat:
"""Tests for error response format"""
def test_error_response_structure_for_general(self, api_client):
"""Verify error response structure for /general endpoint"""
payload = {
"text": "text",
"texts": ["texts"],
"entities": ["org"]
}
response = api_client.post(f"{BASE_URL}/general", json=payload)
assert response.status_code == 400
error = response.json()
assert "error" in error
assert "code" in error["error"]
assert "message" in error["error"]
assert "details" in error["error"]
assert isinstance(error["error"]["code"], str)
assert isinstance(error["error"]["message"], str)
assert isinstance(error["error"]["details"], dict)
def test_error_response_structure_for_relation_extraction(self, api_client):
"""Verify error response structure for /relation-extraction endpoint"""
payload = {
"text": "some text",
"texts": ["another text"],
"relations": ["founded"]
}
response = api_client.post(f"{BASE_URL}/relation-extraction", json=payload)
assert response.status_code == 400
error = response.json()
assert "error" in error
assert "code" in error["error"]
assert "message" in error["error"]
assert "details" in error["error"]
assert error["error"]["code"] == "INVALID_INPUT"
assert "both" in error["error"]["message"].lower()
def test_error_response_structure_for_summarization(self, api_client):
"""Verify error response structure for /summarization endpoint"""
payload = {
"text": "some text",
"texts": ["another text"]
}
response = api_client.post(f"{BASE_URL}/summarization", json=payload)
assert response.status_code == 400
error = response.json()
assert "error" in error
assert "code" in error["error"]
assert "message" in error["error"]
assert "details" in error["error"]
assert error["error"]["code"] == "INVALID_INPUT"
assert "both" in error["error"]["message"].lower()
def test_consistent_error_format_across_endpoints(self, api_client):
"""Ensure all endpoints return consistent error format"""
# Prepare payloads with both text and texts for each endpoint
test_cases = [
("/general", {"text": "t", "texts": ["t"], "entities": ["org"]}),
("/relation-extraction", {"text": "t", "texts": ["t"], "relations": ["rel"]}),
("/summarization", {"text": "t", "texts": ["t"]})
]
for endpoint, payload in test_cases:
response = api_client.post(f"{BASE_URL}{endpoint}", json=payload)
assert response.status_code == 400, f"Endpoint {endpoint} should return 400"
error = response.json()
# Verify consistent error structure
assert "error" in error, f"Endpoint {endpoint} missing 'error' key"
assert "code" in error["error"], f"Endpoint {endpoint} missing 'code' key"
assert "message" in error["error"], f"Endpoint {endpoint} missing 'message' key"
assert "details" in error["error"], f"Endpoint {endpoint} missing 'details' key"
assert error["error"]["code"] == "INVALID_INPUT", f"Endpoint {endpoint} wrong error code"
Loading…
Cancel
Save