AIstudioProxyAPI / tests /api_utils /test_health.py
peijun1's picture
Deploy AI Studio Proxy API to Hugging Face Spaces
a5784e9
Raw
History Blame Contribute Delete
2.86 kB
from unittest.mock import MagicMock
import pytest
from fastapi.responses import JSONResponse
from api_utils.routers.health import health_check
@pytest.mark.asyncio
async def test_health_check_ok():
"""Test health check when everything is OK."""
# Mock dependencies
server_state = {
"is_initializing": False,
"is_playwright_ready": True,
"is_browser_connected": True,
"is_page_ready": True,
}
worker_task = MagicMock()
worker_task.done.return_value = False
request_queue = MagicMock()
request_queue.qsize.return_value = 5
# Run health check
response = await health_check(server_state, worker_task, request_queue)
assert isinstance(response, JSONResponse)
assert response.status_code == 200
content = bytes(response.body).decode()
assert "OK" in content
assert "Service running" in content
assert "queueLength" in content
@pytest.mark.asyncio
async def test_health_check_initializing():
"""Test health check when initializing."""
server_state = {
"is_initializing": True,
"is_playwright_ready": False,
"is_browser_connected": False,
"is_page_ready": False,
}
worker_task = None
request_queue = None
response = await health_check(server_state, worker_task, request_queue) # type: ignore[arg-type]
assert response.status_code == 503
content = bytes(response.body).decode()
assert "Error" in content
assert "Initialization in progress" in content
@pytest.mark.asyncio
async def test_health_check_worker_stopped():
"""Test health check when worker is stopped."""
server_state = {
"is_initializing": False,
"is_playwright_ready": True,
"is_browser_connected": True,
"is_page_ready": True,
}
worker_task = MagicMock()
worker_task.done.return_value = True # Stopped
request_queue = MagicMock()
request_queue.qsize.return_value = 0
response = await health_check(server_state, worker_task, request_queue)
assert response.status_code == 503
content = bytes(response.body).decode()
assert "Worker not running" in content
@pytest.mark.asyncio
async def test_health_check_no_browser():
"""Test health check when browser not connected."""
server_state = {
"is_initializing": False,
"is_playwright_ready": True,
"is_browser_connected": False,
"is_page_ready": False,
}
worker_task = MagicMock()
worker_task.done.return_value = False
request_queue = MagicMock()
request_queue.qsize.return_value = 0
response = await health_check(server_state, worker_task, request_queue)
assert response.status_code == 503
content = bytes(response.body).decode()
assert "Browser not connected" in content
assert "Page not ready" in content