AIstudioProxyAPI / tests /api_utils /utils_ext /test_validation.py
peijun1's picture
Deploy AI Studio Proxy API to Hugging Face Spaces
a5784e9
Raw
History Blame Contribute Delete
3.64 kB
"""
High-quality tests for api_utils/utils_ext/validation.py (zero mocking).
Focus: Test real validation logic with no mocks, only pure function testing.
"""
import pytest
from models import Message
def test_validate_chat_request_valid():
"""
Test scenario: Valid chat request (containing user message)
Strategy: Pure function test, no mocking needed
"""
from api_utils.utils_ext.validation import validate_chat_request
messages = [Message(role="user", content="Hello")]
result = validate_chat_request(messages, req_id="req123")
assert result["error"] is None
assert result["warning"] is None
def test_validate_chat_request_with_system_and_user():
"""
Test scenario: Request containing system and user messages
Verify: Valid request
"""
from api_utils.utils_ext.validation import validate_chat_request
messages = [
Message(role="system", content="You are a helpful assistant."),
Message(role="user", content="Hello"),
]
result = validate_chat_request(messages, req_id="req456")
assert result["error"] is None
assert result["warning"] is None
def test_validate_chat_request_with_assistant_message():
"""
Test scenario: Conversation history containing assistant message
Verify: Valid request
"""
from api_utils.utils_ext.validation import validate_chat_request
messages = [
Message(role="user", content="What is 2+2?"),
Message(role="assistant", content="4"),
Message(role="user", content="Thanks!"),
]
result = validate_chat_request(messages, req_id="req789")
assert result["error"] is None
assert result["warning"] is None
def test_validate_chat_request_empty_messages():
"""
Test scenario: messages array is empty
Expected: Throw ValueError
"""
from api_utils.utils_ext.validation import validate_chat_request
with pytest.raises(ValueError, match="messages.*missing or empty"):
validate_chat_request(messages=[], req_id="req101")
def test_validate_chat_request_only_system_messages():
"""
Test scenario: Only system messages, no user or assistant messages
Expected: Throw ValueError
"""
from api_utils.utils_ext.validation import validate_chat_request
messages = [
Message(role="system", content="System prompt 1"),
Message(role="system", content="System prompt 2"),
]
with pytest.raises(ValueError, match="All messages are system messages"):
validate_chat_request(messages, req_id="req202")
def test_validate_chat_request_req_id_in_error_message():
"""
Test scenario: Verify error message contains req_id
Verify: Error tracking
"""
from api_utils.utils_ext.validation import validate_chat_request
try:
validate_chat_request(messages=[], req_id="req303")
pytest.fail("Expected ValueError")
except ValueError as e:
assert "[req303]" in str(e)
def test_validate_chat_request_mixed_messages_valid():
"""
Test scenario: Complex message history (mixed system, user, assistant)
Verify: Valid request
"""
from api_utils.utils_ext.validation import validate_chat_request
messages = [
Message(role="system", content="Context"),
Message(role="user", content="Question 1"),
Message(role="assistant", content="Answer 1"),
Message(role="system", content="Additional context"),
Message(role="user", content="Question 2"),
]
result = validate_chat_request(messages, req_id="req404")
assert result["error"] is None
assert result["warning"] is None