mirror of
https://github.com/home-assistant/core.git
synced 2025-07-15 17:27:10 +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