parent
cda672a84a
commit
487e5d00a1
@ -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…
Reference in new issue