From 42d235ce4d4368c0160163118441ffa2cb2b2635 Mon Sep 17 00:00:00 2001 From: "Mr. Bubbles" Date: Wed, 26 Jun 2024 11:44:58 +0200 Subject: [PATCH] Add diagnostics platform to pyLoad integration (#120535) --- .../components/pyload/diagnostics.py | 26 +++++++++++++++++ .../pyload/snapshots/test_diagnostics.ambr | 17 +++++++++++ tests/components/pyload/test_diagnostics.py | 28 +++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 homeassistant/components/pyload/diagnostics.py create mode 100644 tests/components/pyload/snapshots/test_diagnostics.ambr create mode 100644 tests/components/pyload/test_diagnostics.py diff --git a/homeassistant/components/pyload/diagnostics.py b/homeassistant/components/pyload/diagnostics.py new file mode 100644 index 00000000000..d18e5a5fe0d --- /dev/null +++ b/homeassistant/components/pyload/diagnostics.py @@ -0,0 +1,26 @@ +"""Diagnostics support for pyLoad.""" + +from __future__ import annotations + +from typing import Any + +from homeassistant.components.diagnostics import async_redact_data +from homeassistant.const import CONF_PASSWORD, CONF_USERNAME +from homeassistant.core import HomeAssistant + +from . import PyLoadConfigEntry +from .coordinator import pyLoadData + +TO_REDACT = {CONF_USERNAME, CONF_PASSWORD} + + +async def async_get_config_entry_diagnostics( + hass: HomeAssistant, config_entry: PyLoadConfigEntry +) -> dict[str, Any]: + """Return diagnostics for a config entry.""" + pyload_data: pyLoadData = config_entry.runtime_data.data + + return { + "config_entry_data": async_redact_data(dict(config_entry.data), TO_REDACT), + "pyload_data": pyload_data, + } diff --git a/tests/components/pyload/snapshots/test_diagnostics.ambr b/tests/components/pyload/snapshots/test_diagnostics.ambr new file mode 100644 index 00000000000..8c3e110f2ec --- /dev/null +++ b/tests/components/pyload/snapshots/test_diagnostics.ambr @@ -0,0 +1,17 @@ +# serializer version: 1 +# name: test_diagnostics + dict({ + 'config_entry_data': dict({ + 'host': 'pyload.local', + 'password': '**REDACTED**', + 'port': 8000, + 'ssl': True, + 'username': '**REDACTED**', + 'verify_ssl': False, + }), + 'pyload_data': dict({ + '__type': "", + 'repr': 'pyLoadData(pause=False, active=1, queue=6, total=37, speed=5405963.0, download=True, reconnect=False, captcha=False, free_space=99999999999)', + }), + }) +# --- diff --git a/tests/components/pyload/test_diagnostics.py b/tests/components/pyload/test_diagnostics.py new file mode 100644 index 00000000000..9c5e73f853f --- /dev/null +++ b/tests/components/pyload/test_diagnostics.py @@ -0,0 +1,28 @@ +"""Tests for pyLoad diagnostics.""" + +from unittest.mock import AsyncMock + +from syrupy.assertion import SnapshotAssertion + +from homeassistant.core import HomeAssistant + +from tests.common import MockConfigEntry +from tests.components.diagnostics import get_diagnostics_for_config_entry +from tests.typing import ClientSessionGenerator + + +async def test_diagnostics( + hass: HomeAssistant, + hass_client: ClientSessionGenerator, + config_entry: MockConfigEntry, + mock_pyloadapi: AsyncMock, + snapshot: SnapshotAssertion, +) -> None: + """Test diagnostics.""" + config_entry.add_to_hass(hass) + await hass.config_entries.async_setup(config_entry.entry_id) + await hass.async_block_till_done() + assert ( + await get_diagnostics_for_config_entry(hass, hass_client, config_entry) + == snapshot + )