diff --git a/homeassistant/components/apcupsd/diagnostics.py b/homeassistant/components/apcupsd/diagnostics.py new file mode 100644 index 00000000000..60433dfbdf4 --- /dev/null +++ b/homeassistant/components/apcupsd/diagnostics.py @@ -0,0 +1,22 @@ +"""Diagnostics support for APCUPSD.""" +from __future__ import annotations + +from typing import Any + +from homeassistant.components.diagnostics import async_redact_data +from homeassistant.config_entries import ConfigEntry +from homeassistant.core import HomeAssistant + +from .const import DOMAIN +from .coordinator import APCUPSdCoordinator, APCUPSdData + +TO_REDACT = {"SERIALNO", "HOSTNAME"} + + +async def async_get_config_entry_diagnostics( + hass: HomeAssistant, entry: ConfigEntry +) -> dict[str, Any]: + """Return diagnostics for a config entry.""" + coordinator: APCUPSdCoordinator = hass.data[DOMAIN][entry.entry_id] + data: APCUPSdData = coordinator.data + return async_redact_data(data, TO_REDACT) diff --git a/tests/components/apcupsd/snapshots/test_diagnostics.ambr b/tests/components/apcupsd/snapshots/test_diagnostics.ambr new file mode 100644 index 00000000000..a3c4d16da2f --- /dev/null +++ b/tests/components/apcupsd/snapshots/test_diagnostics.ambr @@ -0,0 +1,46 @@ +# serializer version: 1 +# name: test_diagnostics + dict({ + 'ALARMDEL': '30 Seconds', + 'APC': '001,038,0985', + 'BATTDATE': '1970-01-01', + 'BATTV': '13.7 Volts', + 'BCHARGE': '100.0 Percent', + 'CABLE': 'USB Cable', + 'CUMONBATT': '8 Seconds', + 'DATE': '1970-01-01 00:00:00 0000', + 'DRIVER': 'USB UPS Driver', + 'END APC': '1970-01-01 00:00:00 0000', + 'FIRMWARE': '928.a8 .D USB FW:a8', + 'HITRANS': '139.0 Volts', + 'ITEMP': '34.6 C Internal', + 'LASTSTEST': '1970-01-01 00:00:00 0000', + 'LASTXFER': 'Automatic or explicit self test', + 'LINEV': '124.0 Volts', + 'LOADPCT': '14.0 Percent', + 'LOTRANS': '92.0 Volts', + 'MAXTIME': '0 Seconds', + 'MBATTCHG': '5 Percent', + 'MINTIMEL': '3 Minutes', + 'MODEL': 'Back-UPS ES 600', + 'NOMAPNT': '60.0 VA', + 'NOMBATTV': '12.0 Volts', + 'NOMINV': '120 Volts', + 'NOMPOWER': '330 Watts', + 'NUMXFERS': '1', + 'OUTCURNT': '0.88 Amps', + 'SELFTEST': 'NO', + 'SENSE': 'Medium', + 'SERIALNO': '**REDACTED**', + 'STATFLAG': '0x05000008', + 'STATUS': 'ONLINE', + 'STESTI': '7 days', + 'TIMELEFT': '51.0 Minutes', + 'TONBATT': '0 Seconds', + 'UPSMODE': 'Stand Alone', + 'UPSNAME': 'MyUPS', + 'VERSION': '3.14.14 (31 May 2016) unknown', + 'XOFFBATT': '1970-01-01 00:00:00 0000', + 'XONBATT': '1970-01-01 00:00:00 0000', + }) +# --- diff --git a/tests/components/apcupsd/test_diagnostics.py b/tests/components/apcupsd/test_diagnostics.py new file mode 100644 index 00000000000..56249a7823b --- /dev/null +++ b/tests/components/apcupsd/test_diagnostics.py @@ -0,0 +1,18 @@ +"""Test APCUPSd diagnostics reporting abilities.""" +from syrupy.assertion import SnapshotAssertion + +from homeassistant.core import HomeAssistant + +from tests.components.apcupsd import async_init_integration +from tests.components.diagnostics import get_diagnostics_for_config_entry +from tests.typing import ClientSessionGenerator + + +async def test_diagnostics( + hass: HomeAssistant, + hass_client: ClientSessionGenerator, + snapshot: SnapshotAssertion, +) -> None: + """Test diagnostics.""" + entry = await async_init_integration(hass) + assert await get_diagnostics_for_config_entry(hass, hass_client, entry) == snapshot