Some checks failed
Integration Tests / performance-tests (push) Has been skipped
LabFusion CI/CD Pipeline / api-docs (push) Successful in 1m47s
LabFusion CI/CD Pipeline / frontend (push) Failing after 2m2s
LabFusion CI/CD Pipeline / integration-tests (push) Has been skipped
Docker Build and Push / build-and-push (push) Failing after 39s
LabFusion CI/CD Pipeline / service-adapters (push) Successful in 56s
LabFusion CI/CD Pipeline / api-gateway (push) Failing after 1m21s
Integration Tests / integration-tests (push) Failing after 35s
Service Adapters (Python FastAPI) / test (3.1) (push) Failing after 13s
Service Adapters (Python FastAPI) / test (3.11) (push) Failing after 43s
Service Adapters (Python FastAPI) / test (3.9) (push) Failing after 44s
Service Adapters (Python FastAPI) / test (3.12) (push) Failing after 47s
Service Adapters (Python FastAPI) / build (push) Has been skipped
### Summary of Changes - Added `--asyncio-mode=auto` to `pytest.ini` for better async test handling. - Corrected patch decorators in `test_general_routes.py` and `test_home_assistant_routes.py` to reference the correct services. - Enhanced test assertions in `test_home_assistant_routes.py` to verify service availability and response codes. - Improved clarity and maintainability of test code by applying clean code principles. ### Expected Results - Improved test execution for asynchronous code and better organization of test cases. - Enhanced reliability of Home Assistant route tests, ensuring accurate service behavior verification.
83 lines
2.5 KiB
Python
83 lines
2.5 KiB
Python
"""
|
|
Tests for general API routes
|
|
"""
|
|
|
|
from unittest.mock import patch
|
|
|
|
from fastapi.testclient import TestClient
|
|
|
|
from main import app
|
|
|
|
client = TestClient(app)
|
|
|
|
|
|
class TestGeneralRoutes:
|
|
"""Test general API routes"""
|
|
|
|
def test_root_endpoint(self):
|
|
"""Test the root endpoint"""
|
|
response = client.get("/")
|
|
assert response.status_code == 200
|
|
|
|
data = response.json()
|
|
assert data["message"] == "LabFusion Service Adapters API"
|
|
assert data["version"] == "1.0.0"
|
|
|
|
def test_health_check(self):
|
|
"""Test the health check endpoint"""
|
|
response = client.get("/health")
|
|
assert response.status_code == 200
|
|
|
|
data = response.json()
|
|
assert data["status"] == "healthy"
|
|
assert "timestamp" in data
|
|
# Verify timestamp is in ISO format
|
|
assert "T" in data["timestamp"] or "Z" in data["timestamp"]
|
|
|
|
@patch("routes.general.SERVICES")
|
|
def test_get_services(self, mock_services):
|
|
"""Test the get services endpoint"""
|
|
# Mock the services configuration
|
|
mock_services.items.return_value = [
|
|
(
|
|
"home_assistant",
|
|
{"enabled": True, "url": "http://homeassistant.local:8123"},
|
|
),
|
|
("frigate", {"enabled": True, "url": "http://frigate.local:5000"}),
|
|
("immich", {"enabled": False, "url": "http://immich.local:2283"}),
|
|
]
|
|
|
|
response = client.get("/services")
|
|
assert response.status_code == 200
|
|
|
|
data = response.json()
|
|
assert "home_assistant" in data
|
|
assert "frigate" in data
|
|
assert "immich" in data
|
|
|
|
# Check service status structure
|
|
ha_service = data["home_assistant"]
|
|
assert ha_service["enabled"] is True
|
|
assert ha_service["url"] == "http://homeassistant.local:8123"
|
|
assert ha_service["status"] == "unknown"
|
|
|
|
def test_health_check_response_model(self):
|
|
"""Test that health check returns proper response model"""
|
|
response = client.get("/health")
|
|
data = response.json()
|
|
|
|
# Verify all required fields are present
|
|
required_fields = ["status", "timestamp"]
|
|
for field in required_fields:
|
|
assert field in data
|
|
|
|
def test_root_response_model(self):
|
|
"""Test that root endpoint returns proper response model"""
|
|
response = client.get("/")
|
|
data = response.json()
|
|
|
|
# Verify all required fields are present
|
|
required_fields = ["message", "version"]
|
|
for field in required_fields:
|
|
assert field in data
|