core/tests/helpers/test_system_info.py

103 lines
4.2 KiB
Python
Raw Normal View History

"""Tests for the system info helper."""
import json
import os
from unittest.mock import patch
import pytest
from homeassistant.components import hassio
from homeassistant.const import __version__ as current_version
from homeassistant.core import HomeAssistant
from homeassistant.helpers.system_info import async_get_system_info, is_official_image
async def test_is_official_image() -> None:
"""Test is_official_image."""
is_official_image.cache_clear()
with patch("homeassistant.helpers.system_info.os.path.isfile", return_value=True):
assert is_official_image() is True
is_official_image.cache_clear()
with patch("homeassistant.helpers.system_info.os.path.isfile", return_value=False):
assert is_official_image() is False
async def test_get_system_info(hass: HomeAssistant) -> None:
"""Test the get system info."""
info = await async_get_system_info(hass)
assert isinstance(info, dict)
2019-07-31 19:25:30 +00:00
assert info["version"] == current_version
assert info["user"] is not None
assert json.dumps(info) is not None
async def test_get_system_info_supervisor_not_available(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None:
"""Test the get system info when supervisor is not available."""
hass.config.components.add("hassio")
with (
patch("platform.system", return_value="Linux"),
patch("homeassistant.helpers.system_info.is_docker_env", return_value=True),
patch("homeassistant.helpers.system_info.is_official_image", return_value=True),
patch.object(hassio, "is_hassio", return_value=True),
patch.object(hassio, "get_info", return_value=None),
patch("homeassistant.helpers.system_info.cached_get_user", return_value="root"),
):
info = await async_get_system_info(hass)
assert isinstance(info, dict)
assert info["version"] == current_version
assert info["user"] is not None
assert json.dumps(info) is not None
assert info["installation_type"] == "Home Assistant Supervised"
assert "No Home Assistant Supervisor info available" in caplog.text
async def test_get_system_info_supervisor_not_loaded(hass: HomeAssistant) -> None:
"""Test the get system info when supervisor is not loaded."""
with (
patch("platform.system", return_value="Linux"),
patch("homeassistant.helpers.system_info.is_docker_env", return_value=True),
patch("homeassistant.helpers.system_info.is_official_image", return_value=True),
patch.object(hassio, "get_info", return_value=None),
patch.dict(os.environ, {"SUPERVISOR": "127.0.0.1"}),
):
info = await async_get_system_info(hass)
assert isinstance(info, dict)
assert info["version"] == current_version
assert info["user"] is not None
assert json.dumps(info) is not None
assert info["installation_type"] == "Unsupported Third Party Container"
async def test_container_installationtype(hass: HomeAssistant) -> None:
"""Test container installation type."""
with (
patch("platform.system", return_value="Linux"),
patch("homeassistant.helpers.system_info.is_docker_env", return_value=True),
patch("homeassistant.helpers.system_info.is_official_image", return_value=True),
patch("homeassistant.helpers.system_info.cached_get_user", return_value="root"),
):
info = await async_get_system_info(hass)
assert info["installation_type"] == "Home Assistant Container"
with (
patch("platform.system", return_value="Linux"),
patch("homeassistant.helpers.system_info.is_docker_env", return_value=True),
patch(
"homeassistant.helpers.system_info.is_official_image", return_value=False
),
patch("homeassistant.helpers.system_info.cached_get_user", return_value="user"),
):
info = await async_get_system_info(hass)
assert info["installation_type"] == "Unsupported Third Party Container"
2021-11-14 09:53:19 +00:00
async def test_getuser_keyerror(hass: HomeAssistant) -> None:
2021-11-14 09:53:19 +00:00
"""Test getuser keyerror."""
with patch(
"homeassistant.helpers.system_info.cached_get_user", side_effect=KeyError
):
info = await async_get_system_info(hass)
2021-11-14 09:53:19 +00:00
assert info["user"] is None