core/tests/components/system_health/test_init.py

106 lines
3.1 KiB
Python
Raw Normal View History

"""Tests for the system health component init."""
import asyncio
from unittest.mock import Mock
import pytest
from homeassistant.setup import async_setup_component
from tests.common import mock_coro
@pytest.fixture
def mock_system_info(hass):
"""Mock system info."""
hass.helpers.system_info.async_get_system_info = Mock(
return_value=mock_coro({'hello': True})
)
async def test_info_endpoint_return_info(hass, hass_ws_client,
mock_system_info):
"""Test that the info endpoint works."""
assert await async_setup_component(hass, 'system_health', {})
client = await hass_ws_client(hass)
resp = await client.send_json({
'id': 6,
'type': 'system_health/info',
})
resp = await client.receive_json()
assert resp['success']
data = resp['result']
assert len(data) == 1
data = data['homeassistant']
assert data == {'hello': True}
async def test_info_endpoint_register_callback(hass, hass_ws_client,
mock_system_info):
"""Test that the info endpoint allows registering callbacks."""
async def mock_info(hass):
return {'storage': 'YAML'}
hass.components.system_health.async_register_info('lovelace', mock_info)
assert await async_setup_component(hass, 'system_health', {})
client = await hass_ws_client(hass)
resp = await client.send_json({
'id': 6,
'type': 'system_health/info',
})
resp = await client.receive_json()
assert resp['success']
data = resp['result']
assert len(data) == 2
data = data['lovelace']
assert data == {'storage': 'YAML'}
async def test_info_endpoint_register_callback_timeout(hass, hass_ws_client,
mock_system_info):
"""Test that the info endpoint timing out."""
async def mock_info(hass):
raise asyncio.TimeoutError
hass.components.system_health.async_register_info('lovelace', mock_info)
assert await async_setup_component(hass, 'system_health', {})
client = await hass_ws_client(hass)
resp = await client.send_json({
'id': 6,
'type': 'system_health/info',
})
resp = await client.receive_json()
assert resp['success']
data = resp['result']
assert len(data) == 2
data = data['lovelace']
assert data == {'error': 'Fetching info timed out'}
async def test_info_endpoint_register_callback_exc(hass, hass_ws_client,
mock_system_info):
"""Test that the info endpoint requires auth."""
async def mock_info(hass):
raise Exception("TEST ERROR")
hass.components.system_health.async_register_info('lovelace', mock_info)
assert await async_setup_component(hass, 'system_health', {})
client = await hass_ws_client(hass)
resp = await client.send_json({
'id': 6,
'type': 'system_health/info',
})
resp = await client.receive_json()
assert resp['success']
data = resp['result']
assert len(data) == 2
data = data['lovelace']
assert data == {'error': 'TEST ERROR'}