mirror of
https://github.com/home-assistant/core.git
synced 2025-07-17 18:27:09 +00:00
Add diagnostics platform to AVM Fritz!Smarthome (#64657)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
This commit is contained in:
parent
a827d91e3a
commit
e0e6853968
33
homeassistant/components/fritzbox/diagnostics.py
Normal file
33
homeassistant/components/fritzbox/diagnostics.py
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
"""Diagnostics support for AVM Fritz!Smarthome."""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from homeassistant.components.diagnostics import async_redact_data
|
||||||
|
from homeassistant.config_entries import ConfigEntry
|
||||||
|
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
|
||||||
|
from homeassistant.core import HomeAssistant
|
||||||
|
|
||||||
|
from .const import CONF_COORDINATOR, DOMAIN
|
||||||
|
from .coordinator import FritzboxDataUpdateCoordinator
|
||||||
|
|
||||||
|
TO_REDACT = {CONF_USERNAME, CONF_PASSWORD}
|
||||||
|
|
||||||
|
|
||||||
|
async def async_get_config_entry_diagnostics(
|
||||||
|
hass: HomeAssistant, entry: ConfigEntry
|
||||||
|
) -> dict:
|
||||||
|
"""Return diagnostics for a config entry."""
|
||||||
|
data: dict = hass.data[DOMAIN][entry.entry_id]
|
||||||
|
coordinator: FritzboxDataUpdateCoordinator = data[CONF_COORDINATOR]
|
||||||
|
|
||||||
|
diag_data = {
|
||||||
|
"entry": async_redact_data(entry.as_dict(), TO_REDACT),
|
||||||
|
"data": {},
|
||||||
|
}
|
||||||
|
if not isinstance(coordinator.data, dict):
|
||||||
|
return diag_data
|
||||||
|
|
||||||
|
diag_data["data"] = {
|
||||||
|
ain: {k: v for k, v in vars(dev).items() if not k.startswith("_")}
|
||||||
|
for ain, dev in coordinator.data.items()
|
||||||
|
}
|
||||||
|
return diag_data
|
33
tests/components/fritzbox/test_diagnostics.py
Normal file
33
tests/components/fritzbox/test_diagnostics.py
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
"""Tests for the AVM Fritz!Box integration."""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from unittest.mock import Mock
|
||||||
|
|
||||||
|
from aiohttp import ClientSession
|
||||||
|
|
||||||
|
from homeassistant.components.diagnostics import REDACTED
|
||||||
|
from homeassistant.components.fritzbox.const import DOMAIN as FB_DOMAIN
|
||||||
|
from homeassistant.components.fritzbox.diagnostics import TO_REDACT
|
||||||
|
from homeassistant.const import CONF_DEVICES
|
||||||
|
from homeassistant.core import HomeAssistant
|
||||||
|
|
||||||
|
from . import setup_config_entry
|
||||||
|
from .const import MOCK_CONFIG
|
||||||
|
|
||||||
|
from tests.components.diagnostics import get_diagnostics_for_config_entry
|
||||||
|
|
||||||
|
|
||||||
|
async def test_entry_diagnostics(
|
||||||
|
hass: HomeAssistant, hass_client: ClientSession, fritz: Mock
|
||||||
|
):
|
||||||
|
"""Test config entry diagnostics."""
|
||||||
|
assert await setup_config_entry(hass, MOCK_CONFIG[FB_DOMAIN][CONF_DEVICES][0])
|
||||||
|
|
||||||
|
entries = hass.config_entries.async_entries(FB_DOMAIN)
|
||||||
|
entry_dict = entries[0].as_dict()
|
||||||
|
for key in TO_REDACT:
|
||||||
|
entry_dict["data"][key] = REDACTED
|
||||||
|
|
||||||
|
result = await get_diagnostics_for_config_entry(hass, hass_client, entries[0])
|
||||||
|
|
||||||
|
assert result == {"entry": entry_dict, "data": {}}
|
Loading…
x
Reference in New Issue
Block a user