From 013b91394e62e9910ba85d7f1b333692d0f3fd00 Mon Sep 17 00:00:00 2001 From: IceBotYT <34712694+IceBotYT@users.noreply.github.com> Date: Mon, 19 Aug 2024 04:22:36 -0400 Subject: [PATCH] Add diagnostics to Nice G.O. (#124194) --- .../components/nice_go/diagnostics.py | 30 +++++++++++++++++++ .../nice_go/snapshots/test_diagnostics.ambr | 2 +- tests/components/nice_go/test_diagnostics.py | 29 ++++++++++++++++++ 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 homeassistant/components/nice_go/diagnostics.py create mode 100644 tests/components/nice_go/test_diagnostics.py diff --git a/homeassistant/components/nice_go/diagnostics.py b/homeassistant/components/nice_go/diagnostics.py new file mode 100644 index 00000000000..2c9a695d4b5 --- /dev/null +++ b/homeassistant/components/nice_go/diagnostics.py @@ -0,0 +1,30 @@ +"""Diagnostics support for Nice G.O..""" + +from __future__ import annotations + +from dataclasses import asdict +from typing import Any + +from homeassistant.components.diagnostics import async_redact_data +from homeassistant.const import CONF_EMAIL, CONF_PASSWORD +from homeassistant.core import HomeAssistant + +from . import NiceGOConfigEntry +from .const import CONF_REFRESH_TOKEN + +TO_REDACT = {CONF_PASSWORD, CONF_EMAIL, CONF_REFRESH_TOKEN, "title", "unique_id"} + + +async def async_get_config_entry_diagnostics( + hass: HomeAssistant, entry: NiceGOConfigEntry +) -> dict[str, Any]: + """Return diagnostics for a config entry.""" + coordinator = entry.runtime_data + + return { + "entry": async_redact_data(entry.as_dict(), TO_REDACT), + "coordinator_data": { + device_id: asdict(device_data) + for device_id, device_data in coordinator.data.items() + }, + } diff --git a/tests/components/nice_go/snapshots/test_diagnostics.ambr b/tests/components/nice_go/snapshots/test_diagnostics.ambr index b7d564b619b..f79b0607ce2 100644 --- a/tests/components/nice_go/snapshots/test_diagnostics.ambr +++ b/tests/components/nice_go/snapshots/test_diagnostics.ambr @@ -36,7 +36,7 @@ 'pref_disable_polling': False, 'source': 'user', 'title': '**REDACTED**', - 'unique_id': None, + 'unique_id': '**REDACTED**', 'version': 1, }), }) diff --git a/tests/components/nice_go/test_diagnostics.py b/tests/components/nice_go/test_diagnostics.py new file mode 100644 index 00000000000..1c88c6a8dc6 --- /dev/null +++ b/tests/components/nice_go/test_diagnostics.py @@ -0,0 +1,29 @@ +"""Test diagnostics of Nice G.O..""" + +from unittest.mock import AsyncMock + +from syrupy import SnapshotAssertion +from syrupy.filters import props + +from homeassistant.core import HomeAssistant + +from . import setup_integration + +from tests.common import MockConfigEntry +from tests.components.diagnostics import get_diagnostics_for_config_entry +from tests.typing import ClientSessionGenerator + + +async def test_entry_diagnostics( + hass: HomeAssistant, + hass_client: ClientSessionGenerator, + snapshot: SnapshotAssertion, + mock_nice_go: AsyncMock, + mock_config_entry: MockConfigEntry, +) -> None: + """Test config entry diagnostics.""" + await setup_integration(hass, mock_config_entry, []) + result = await get_diagnostics_for_config_entry( + hass, hass_client, mock_config_entry + ) + assert result == snapshot(exclude=props("created_at", "modified_at"))