Add the validation for empty texts.
This commit is contained in:
@@ -27,13 +27,40 @@ def validate_single_or_batch(text: Optional[str], texts: Optional[List[str]]):
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if text == "" and texts is None:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_400_BAD_REQUEST,
|
||||||
|
detail={
|
||||||
|
"error": {
|
||||||
|
"code": "INVALID_INPUT",
|
||||||
|
"message": "'text' cannot be empty or only whitespace",
|
||||||
|
"details": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
if texts is not None and len(texts) == 0:
|
if texts is not None and len(texts) == 0:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=status.HTTP_400_BAD_REQUEST,
|
status_code=status.HTTP_400_BAD_REQUEST,
|
||||||
detail={
|
detail={
|
||||||
"error": {
|
"error": {
|
||||||
"code": "INVALID_INPUT",
|
"code": "INVALID_INPUT",
|
||||||
"message": "texts list cannot be empty",
|
"message": "Texts list cannot be empty",
|
||||||
|
"details": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
if texts is not None and len(texts) != 0:
|
||||||
|
# Check for empty strings within the list
|
||||||
|
for i, t in enumerate(texts):
|
||||||
|
if not isinstance(t, str) or not t.strip():
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_400_BAD_REQUEST,
|
||||||
|
detail={
|
||||||
|
"error": {
|
||||||
|
"code": "INVALID_INPUT",
|
||||||
|
"message": f"Text item at index {i} in 'texts' cannot be empty or only whitespace",
|
||||||
"details": {}
|
"details": {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,6 +82,53 @@ class TestGeneralEndpoint:
|
|||||||
assert "error" in error
|
assert "error" in error
|
||||||
assert error["error"]["code"] == "INVALID_INPUT"
|
assert error["error"]["code"] == "INVALID_INPUT"
|
||||||
|
|
||||||
|
def test_error_empty_text_provided(self, api_client):
|
||||||
|
"""Test error when the text is empty"""
|
||||||
|
payload = {
|
||||||
|
"text": "",
|
||||||
|
"entities": ["organization"]
|
||||||
|
}
|
||||||
|
response = api_client.post(f"{BASE_URL}/general", json=payload)
|
||||||
|
assert response.status_code == 400
|
||||||
|
|
||||||
|
error = response.json()
|
||||||
|
assert "error" in error
|
||||||
|
assert error["error"]["code"] == "INVALID_INPUT"
|
||||||
|
|
||||||
|
def test_error_texts_has_empty_value(self, api_client):
|
||||||
|
"""Test error when texts has an empty value"""
|
||||||
|
payload = {
|
||||||
|
"texts": [
|
||||||
|
"Apple Inc. was founded by Steve Jobs in California.",
|
||||||
|
"",
|
||||||
|
"Elon Musk leads Tesla and SpaceX."
|
||||||
|
],
|
||||||
|
"entities": ["organization"]
|
||||||
|
}
|
||||||
|
response = api_client.post(f"{BASE_URL}/general", json=payload)
|
||||||
|
assert response.status_code == 400
|
||||||
|
|
||||||
|
error = response.json()
|
||||||
|
assert "error" in error
|
||||||
|
assert error["error"]["code"] == "INVALID_INPUT"
|
||||||
|
|
||||||
|
def test_error_texts_has_empty_values(self, api_client):
|
||||||
|
"""Test error when texts has empty values"""
|
||||||
|
payload = {
|
||||||
|
"texts": [
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
""
|
||||||
|
],
|
||||||
|
"entities": ["organization"]
|
||||||
|
}
|
||||||
|
response = api_client.post(f"{BASE_URL}/general", json=payload)
|
||||||
|
assert response.status_code == 400
|
||||||
|
|
||||||
|
error = response.json()
|
||||||
|
assert "error" in error
|
||||||
|
assert error["error"]["code"] == "INVALID_INPUT"
|
||||||
|
|
||||||
def test_error_empty_entities_list(self, api_client):
|
def test_error_empty_entities_list(self, api_client):
|
||||||
"""Test error with an empty entities list"""
|
"""Test error with an empty entities list"""
|
||||||
payload = {
|
payload = {
|
||||||
|
|||||||
@@ -85,3 +85,63 @@ class TestRelationExtractionEndpoint:
|
|||||||
response = api_client.post(f"{BASE_URL}/relation-extraction", json=payload)
|
response = api_client.post(f"{BASE_URL}/relation-extraction", json=payload)
|
||||||
assert response.status_code == 400
|
assert response.status_code == 400
|
||||||
|
|
||||||
|
def test_error_no_text_provided(self, api_client):
|
||||||
|
"""Test error when neither text nor texts is provided"""
|
||||||
|
payload = {
|
||||||
|
"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 error["error"]["code"] == "INVALID_INPUT"
|
||||||
|
|
||||||
|
def test_error_empty_text_provided(self, api_client):
|
||||||
|
"""Test error when the text is empty"""
|
||||||
|
payload = {
|
||||||
|
"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 error["error"]["code"] == "INVALID_INPUT"
|
||||||
|
|
||||||
|
def test_error_texts_has_empty_value(self, api_client):
|
||||||
|
"""Test error when texts has an empty value"""
|
||||||
|
payload = {
|
||||||
|
"texts": [
|
||||||
|
"Bill Gates founded Microsoft.",
|
||||||
|
"",
|
||||||
|
"Apple is based in California."
|
||||||
|
],
|
||||||
|
"relations": ["founded", "founded_by", "based_in"],
|
||||||
|
"threshold": 0.3
|
||||||
|
}
|
||||||
|
response = api_client.post(f"{BASE_URL}/relation-extraction", json=payload)
|
||||||
|
assert response.status_code == 400
|
||||||
|
|
||||||
|
error = response.json()
|
||||||
|
assert "error" in error
|
||||||
|
assert error["error"]["code"] == "INVALID_INPUT"
|
||||||
|
|
||||||
|
def test_error_texts_has_empty_values(self, api_client):
|
||||||
|
"""Test error when texts has empty values"""
|
||||||
|
payload = {
|
||||||
|
"texts": [
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
""
|
||||||
|
],
|
||||||
|
"relations": ["founded", "founded_by", "based_in"],
|
||||||
|
"threshold": 0.3
|
||||||
|
}
|
||||||
|
response = api_client.post(f"{BASE_URL}/relation-extraction", json=payload)
|
||||||
|
assert response.status_code == 400
|
||||||
|
|
||||||
|
error = response.json()
|
||||||
|
assert "error" in error
|
||||||
|
assert error["error"]["code"] == "INVALID_INPUT"
|
||||||
|
|||||||
@@ -57,3 +57,54 @@ class TestSummarizationEndpoint:
|
|||||||
}
|
}
|
||||||
response = api_client.post(f"{BASE_URL}/summarization", json=payload)
|
response = api_client.post(f"{BASE_URL}/summarization", json=payload)
|
||||||
assert response.status_code == 400
|
assert response.status_code == 400
|
||||||
|
|
||||||
|
error = response.json()
|
||||||
|
assert "error" in error
|
||||||
|
assert error["error"]["code"] == "INVALID_INPUT"
|
||||||
|
|
||||||
|
def test_error_empty_text(self, api_client):
|
||||||
|
"""Test error when the text is empty"""
|
||||||
|
payload = {
|
||||||
|
"text": "",
|
||||||
|
"threshold": 0.5
|
||||||
|
}
|
||||||
|
response = api_client.post(f"{BASE_URL}/summarization", json=payload)
|
||||||
|
assert response.status_code == 400
|
||||||
|
|
||||||
|
error = response.json()
|
||||||
|
assert "error" in error
|
||||||
|
assert error["error"]["code"] == "INVALID_INPUT"
|
||||||
|
|
||||||
|
def test_error_texts_has_empty_value(self, api_client):
|
||||||
|
"""Test error when texts has an empty value"""
|
||||||
|
payload = {
|
||||||
|
"texts": [
|
||||||
|
"Python is a high-level programming language. It's known for its simplicity and readability.",
|
||||||
|
"",
|
||||||
|
"Rust is a systems programming language. It focuses on safety and performance."
|
||||||
|
],
|
||||||
|
"threshold": 0.3
|
||||||
|
}
|
||||||
|
response = api_client.post(f"{BASE_URL}/summarization", json=payload)
|
||||||
|
assert response.status_code == 400
|
||||||
|
|
||||||
|
error = response.json()
|
||||||
|
assert "error" in error
|
||||||
|
assert error["error"]["code"] == "INVALID_INPUT"
|
||||||
|
|
||||||
|
def test_error_texts_has_empty_values(self, api_client):
|
||||||
|
"""Test error when texts has empty values"""
|
||||||
|
payload = {
|
||||||
|
"texts": [
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
""
|
||||||
|
],
|
||||||
|
"threshold": 0.3
|
||||||
|
}
|
||||||
|
response = api_client.post(f"{BASE_URL}/summarization", json=payload)
|
||||||
|
assert response.status_code == 400
|
||||||
|
|
||||||
|
error = response.json()
|
||||||
|
assert "error" in error
|
||||||
|
assert error["error"]["code"] == "INVALID_INPUT"
|
||||||
|
|||||||
Reference in New Issue
Block a user