hass-core/tests/components/logger/test_websocket_api.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

263 lines
7.9 KiB
Python
Raw Normal View History

"""Tests for Logger Websocket API commands."""
import logging
from unittest.mock import patch
from homeassistant import loader
from homeassistant.components.logger.helpers import async_get_domain_config
from homeassistant.components.websocket_api import TYPE_RESULT
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component
from tests.common import MockUser
from tests.typing import WebSocketGenerator
async def test_integration_log_info(
hass: HomeAssistant, hass_ws_client: WebSocketGenerator, hass_admin_user: MockUser
) -> None:
"""Test fetching integration log info."""
assert await async_setup_component(hass, "logger", {})
logging.getLogger("homeassistant.components.http").setLevel(logging.DEBUG)
logging.getLogger("homeassistant.components.websocket_api").setLevel(logging.DEBUG)
websocket_client = await hass_ws_client()
await websocket_client.send_json({"id": 7, "type": "logger/log_info"})
msg = await websocket_client.receive_json()
assert msg["id"] == 7
assert msg["type"] == TYPE_RESULT
assert msg["success"]
assert {"domain": "http", "level": logging.DEBUG} in msg["result"]
assert {"domain": "websocket_api", "level": logging.DEBUG} in msg["result"]
async def test_integration_log_level_logger_not_loaded(
hass: HomeAssistant, hass_ws_client: WebSocketGenerator, hass_admin_user: MockUser
) -> None:
"""Test setting integration log level."""
websocket_client = await hass_ws_client()
await websocket_client.send_json(
{
"id": 7,
"type": "logger/log_level",
"integration": "websocket_api",
"level": logging.DEBUG,
"persistence": "none",
}
)
msg = await websocket_client.receive_json()
assert msg["id"] == 7
assert msg["type"] == TYPE_RESULT
assert not msg["success"]
async def test_integration_log_level(
hass: HomeAssistant, hass_ws_client: WebSocketGenerator, hass_admin_user: MockUser
) -> None:
"""Test setting integration log level."""
websocket_client = await hass_ws_client()
assert await async_setup_component(hass, "logger", {})
await websocket_client.send_json(
{
"id": 7,
"type": "logger/integration_log_level",
"integration": "websocket_api",
"level": "DEBUG",
"persistence": "none",
}
)
msg = await websocket_client.receive_json()
assert msg["id"] == 7
assert msg["type"] == TYPE_RESULT
assert msg["success"]
assert async_get_domain_config(hass).overrides == {
"homeassistant.components.websocket_api": logging.DEBUG
}
async def test_custom_integration_log_level(
hass: HomeAssistant, hass_ws_client: WebSocketGenerator, hass_admin_user: MockUser
) -> None:
"""Test setting integration log level."""
websocket_client = await hass_ws_client()
assert await async_setup_component(hass, "logger", {})
integration = loader.Integration(
hass,
"custom_components.hue",
None,
{
"name": "Hue",
"dependencies": [],
"requirements": [],
"domain": "hue",
"loggers": ["some_other_logger"],
},
)
with (
patch(
"homeassistant.components.logger.helpers.async_get_integration",
return_value=integration,
),
patch(
"homeassistant.components.logger.websocket_api.async_get_integration",
return_value=integration,
),
):
await websocket_client.send_json(
{
"id": 7,
"type": "logger/integration_log_level",
"integration": "hue",
"level": "DEBUG",
"persistence": "none",
}
)
msg = await websocket_client.receive_json()
assert msg["id"] == 7
assert msg["type"] == TYPE_RESULT
assert msg["success"]
assert async_get_domain_config(hass).overrides == {
"homeassistant.components.hue": logging.DEBUG,
"custom_components.hue": logging.DEBUG,
"some_other_logger": logging.DEBUG,
}
async def test_integration_log_level_unknown_integration(
hass: HomeAssistant, hass_ws_client: WebSocketGenerator, hass_admin_user: MockUser
) -> None:
"""Test setting integration log level for an unknown integration."""
websocket_client = await hass_ws_client()
assert await async_setup_component(hass, "logger", {})
await websocket_client.send_json(
{
"id": 7,
"type": "logger/integration_log_level",
"integration": "websocket_api_123",
"level": "DEBUG",
"persistence": "none",
}
)
msg = await websocket_client.receive_json()
assert msg["id"] == 7
assert msg["type"] == TYPE_RESULT
assert not msg["success"]
async def test_module_log_level(
hass: HomeAssistant, hass_ws_client: WebSocketGenerator, hass_admin_user: MockUser
) -> None:
"""Test setting integration log level."""
websocket_client = await hass_ws_client()
assert await async_setup_component(
hass,
"logger",
{"logger": {"logs": {"homeassistant.components.other_component": "warning"}}},
)
await websocket_client.send_json(
{
"id": 7,
"type": "logger/log_level",
"module": "homeassistant.components.websocket_api",
"level": "DEBUG",
"persistence": "none",
}
)
msg = await websocket_client.receive_json()
assert msg["id"] == 7
assert msg["type"] == TYPE_RESULT
assert msg["success"]
assert async_get_domain_config(hass).overrides == {
"homeassistant.components.websocket_api": logging.DEBUG,
"homeassistant.components.other_component": logging.WARNING,
}
async def test_module_log_level_override(
hass: HomeAssistant, hass_ws_client: WebSocketGenerator, hass_admin_user: MockUser
) -> None:
"""Test override yaml integration log level."""
websocket_client = await hass_ws_client()
assert await async_setup_component(
hass,
"logger",
{"logger": {"logs": {"homeassistant.components.websocket_api": "warning"}}},
)
assert async_get_domain_config(hass).overrides == {
"homeassistant.components.websocket_api": logging.WARNING
}
await websocket_client.send_json(
{
"id": 6,
"type": "logger/log_level",
"module": "homeassistant.components.websocket_api",
"level": "ERROR",
"persistence": "none",
}
)
msg = await websocket_client.receive_json()
assert msg["id"] == 6
assert msg["type"] == TYPE_RESULT
assert msg["success"]
assert async_get_domain_config(hass).overrides == {
"homeassistant.components.websocket_api": logging.ERROR
}
await websocket_client.send_json(
{
"id": 7,
"type": "logger/log_level",
"module": "homeassistant.components.websocket_api",
"level": "DEBUG",
"persistence": "none",
}
)
msg = await websocket_client.receive_json()
assert msg["id"] == 7
assert msg["type"] == TYPE_RESULT
assert msg["success"]
assert async_get_domain_config(hass).overrides == {
"homeassistant.components.websocket_api": logging.DEBUG
}
await websocket_client.send_json(
{
"id": 8,
"type": "logger/log_level",
"module": "homeassistant.components.websocket_api",
"level": "NOTSET",
"persistence": "none",
}
)
msg = await websocket_client.receive_json()
assert msg["id"] == 8
assert msg["type"] == TYPE_RESULT
assert msg["success"]
assert async_get_domain_config(hass).overrides == {
"homeassistant.components.websocket_api": logging.NOTSET
}