Merge pull request #455 from christianlouis/copilot/increase-code-coverage-status-py
test(status): increase code coverage for app/views/status.py to 100%
This commit is contained in:
@@ -288,6 +288,83 @@ class TestContainerInfoDetection:
|
|||||||
# Should handle None and set to Unknown
|
# Should handle None and set to Unknown
|
||||||
assert context["container_info"]["git_sha"] == "Unknown"
|
assert context["container_info"]["git_sha"] == "Unknown"
|
||||||
|
|
||||||
|
@patch("app.views.status.get_provider_status")
|
||||||
|
@patch("app.views.status.templates")
|
||||||
|
@patch("app.views.status.os.path.exists")
|
||||||
|
@patch("builtins.open", new_callable=mock_open, read_data="12:docker:/abc123456789")
|
||||||
|
@pytest.mark.asyncio
|
||||||
|
async def test_handles_git_sha_exception_in_docker(self, mock_file, mock_exists, mock_templates, mock_providers):
|
||||||
|
"""Test handles exception when reading git_sha in Docker environment (lines 53-54)."""
|
||||||
|
import types
|
||||||
|
|
||||||
|
from app.views.status import status_dashboard
|
||||||
|
|
||||||
|
mock_exists.return_value = True
|
||||||
|
mock_providers.return_value = {}
|
||||||
|
# SimpleNamespace without git_sha causes AttributeError on access → triggers except block
|
||||||
|
fake_settings = types.SimpleNamespace(version="1.0.0")
|
||||||
|
|
||||||
|
with patch("app.views.status.settings", fake_settings):
|
||||||
|
mock_request = Mock()
|
||||||
|
await status_dashboard(mock_request)
|
||||||
|
|
||||||
|
call_args = mock_templates.TemplateResponse.call_args
|
||||||
|
context = call_args[0][1]
|
||||||
|
assert context["container_info"]["is_docker"] is True
|
||||||
|
assert context["container_info"]["git_sha"] == "Unknown"
|
||||||
|
|
||||||
|
@patch("app.views.status.get_provider_status")
|
||||||
|
@patch("app.views.status.templates")
|
||||||
|
@patch("app.views.status.os.path.exists")
|
||||||
|
@patch("builtins.open", new_callable=mock_open, read_data="12:docker:/abc123456789")
|
||||||
|
@pytest.mark.asyncio
|
||||||
|
async def test_handles_runtime_info_exception_in_docker(
|
||||||
|
self, mock_file, mock_exists, mock_templates, mock_providers
|
||||||
|
):
|
||||||
|
"""Test handles exception when reading runtime_info in Docker environment (lines 59-60)."""
|
||||||
|
import types
|
||||||
|
|
||||||
|
from app.views.status import status_dashboard
|
||||||
|
|
||||||
|
mock_exists.return_value = True
|
||||||
|
mock_providers.return_value = {}
|
||||||
|
# SimpleNamespace has git_sha but not runtime_info → triggers except block at line 59-60
|
||||||
|
fake_settings = types.SimpleNamespace(version="1.0.0", git_sha="abc1234567890")
|
||||||
|
|
||||||
|
with patch("app.views.status.settings", fake_settings):
|
||||||
|
mock_request = Mock()
|
||||||
|
await status_dashboard(mock_request)
|
||||||
|
|
||||||
|
call_args = mock_templates.TemplateResponse.call_args
|
||||||
|
context = call_args[0][1]
|
||||||
|
assert context["container_info"]["is_docker"] is True
|
||||||
|
# runtime_info should not be in container_info when it raises an exception
|
||||||
|
assert "runtime_info" not in context["container_info"]
|
||||||
|
|
||||||
|
@patch("app.views.status.get_provider_status")
|
||||||
|
@patch("app.views.status.templates")
|
||||||
|
@patch("app.views.status.os.path.exists")
|
||||||
|
@pytest.mark.asyncio
|
||||||
|
async def test_handles_git_sha_exception_in_non_docker(self, mock_exists, mock_templates, mock_providers):
|
||||||
|
"""Test handles exception when reading git_sha in non-Docker environment (lines 68-69)."""
|
||||||
|
import types
|
||||||
|
|
||||||
|
from app.views.status import status_dashboard
|
||||||
|
|
||||||
|
mock_exists.return_value = False # Not in Docker
|
||||||
|
mock_providers.return_value = {}
|
||||||
|
# SimpleNamespace without git_sha causes AttributeError on access → triggers except block
|
||||||
|
fake_settings = types.SimpleNamespace(version="1.0.0")
|
||||||
|
|
||||||
|
with patch("app.views.status.settings", fake_settings):
|
||||||
|
mock_request = Mock()
|
||||||
|
await status_dashboard(mock_request)
|
||||||
|
|
||||||
|
call_args = mock_templates.TemplateResponse.call_args
|
||||||
|
context = call_args[0][1]
|
||||||
|
assert context["container_info"]["is_docker"] is False
|
||||||
|
assert context["container_info"]["git_sha"] == "Unknown"
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.integration
|
@pytest.mark.integration
|
||||||
class TestStatusEndpointsRequireAuth:
|
class TestStatusEndpointsRequireAuth:
|
||||||
|
|||||||
Reference in New Issue
Block a user