AIstudioProxyAPI / tests /api_utils /test_server_state.py
peijun1's picture
Deploy AI Studio Proxy API to Hugging Face Spaces
a5784e9
Raw
History Blame Contribute Delete
2.69 kB
"""
High-quality tests for api_utils/server_state.py - Server state management.
Focus: Test ServerState class methods and module-level __getattr__.
Strategy: Test clear_debug_logs and backward compatibility __getattr__.
"""
import pytest
from api_utils import server_state
from api_utils.server_state import ServerState, state
@pytest.fixture
def fresh_state():
"""Provide a fresh ServerState instance for each test."""
test_state = ServerState()
yield test_state
test_state.reset()
def test_clear_debug_logs(fresh_state):
"""
Test scenario: Clear debug logs
Expected: console_logs and network_log are reset (lines 96-97)
"""
# Setup: Fill some log data
fresh_state.console_logs = [
{"level": "info", "message": "test1"},
{"level": "error", "message": "test2"},
]
fresh_state.network_log = {
"requests": [{"url": "http://example.com", "method": "GET"}],
"responses": [{"status": 200, "body": "OK"}],
}
# Execute: Clear logs
fresh_state.clear_debug_logs()
# Verify: Logs cleared (lines 96-97)
assert fresh_state.console_logs == []
assert fresh_state.network_log == {"requests": [], "responses": []}
def test_module_getattr_success():
"""
Test scenario: Access state attribute using __getattr__
Expected: Return state attribute value (line 135)
"""
# Access logger via __getattr__
logger_via_getattr = server_state.logger
# Verify: Return state.logger (line 135 triggers getattr)
assert logger_via_getattr is state.logger
def test_module_getattr_missing_attribute():
"""
Test scenario: Access non-existent attribute using __getattr__
Expected: Throw AttributeError (line 136)
"""
with pytest.raises(AttributeError) as exc_info:
_ = server_state.nonexistent_attribute
# Verify: Error message
assert "has no attribute 'nonexistent_attribute'" in str(exc_info.value)
def test_state_reset():
"""
Test scenario: Reset state
Expected: All attributes restore to initial values
"""
# Modify some states
state.is_page_ready = True
state.current_ai_studio_model_id = "test-model"
state.console_logs = [{"test": "data"}]
# Reset
state.reset()
# Verify: Restore initial values
assert state.is_page_ready is False
assert state.current_ai_studio_model_id is None
assert state.console_logs == []
def test_state_singleton():
"""
Test scenario: Verify state is a singleton
Expected: Imported state is the same instance
"""
from api_utils.server_state import state as state2
# Verify: Is the same instance
assert state is state2