Spaces:
Paused
Paused
| """ | |
| 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 | |