From 22306bd3093096ff48d3045531223cd92641cb06 Mon Sep 17 00:00:00 2001 From: David Knowles Date: Sat, 4 Nov 2023 11:54:00 -0400 Subject: [PATCH] Add diagnostics support to Schlage (#103347) Co-authored-by: J. Nick Koston --- .../components/schlage/diagnostics.py | 23 +++++++++++++++++++ .../components/schlage/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- tests/components/schlage/test_diagnostics.py | 23 +++++++++++++++++++ 5 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 homeassistant/components/schlage/diagnostics.py create mode 100644 tests/components/schlage/test_diagnostics.py diff --git a/homeassistant/components/schlage/diagnostics.py b/homeassistant/components/schlage/diagnostics.py new file mode 100644 index 00000000000..af1bf311676 --- /dev/null +++ b/homeassistant/components/schlage/diagnostics.py @@ -0,0 +1,23 @@ +"""Diagnostics support for Schlage.""" + +from __future__ import annotations + +from typing import Any + +from homeassistant.config_entries import ConfigEntry +from homeassistant.core import HomeAssistant + +from .const import DOMAIN +from .coordinator import SchlageDataUpdateCoordinator + + +async def async_get_config_entry_diagnostics( + hass: HomeAssistant, + config_entry: ConfigEntry, +) -> dict[str, Any]: + """Return diagnostics for a config entry.""" + coordinator: SchlageDataUpdateCoordinator = hass.data[DOMAIN][config_entry.entry_id] + # NOTE: Schlage diagnostics are already redacted. + return { + "locks": [ld.lock.get_diagnostics() for ld in coordinator.data.locks.values()] + } diff --git a/homeassistant/components/schlage/manifest.json b/homeassistant/components/schlage/manifest.json index f474f739904..1eb7cb2ab0f 100644 --- a/homeassistant/components/schlage/manifest.json +++ b/homeassistant/components/schlage/manifest.json @@ -5,5 +5,5 @@ "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/schlage", "iot_class": "cloud_polling", - "requirements": ["pyschlage==2023.10.0"] + "requirements": ["pyschlage==2023.11.0"] } diff --git a/requirements_all.txt b/requirements_all.txt index 3cb3e06c7d9..56f7aaf3511 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2007,7 +2007,7 @@ pysabnzbd==1.1.1 pysaj==0.0.16 # homeassistant.components.schlage -pyschlage==2023.10.0 +pyschlage==2023.11.0 # homeassistant.components.sensibo pysensibo==1.0.36 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index bf55bc4aeee..c7e0dc73ff4 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1514,7 +1514,7 @@ pyrympro==0.0.7 pysabnzbd==1.1.1 # homeassistant.components.schlage -pyschlage==2023.10.0 +pyschlage==2023.11.0 # homeassistant.components.sensibo pysensibo==1.0.36 diff --git a/tests/components/schlage/test_diagnostics.py b/tests/components/schlage/test_diagnostics.py new file mode 100644 index 00000000000..15b2316bf38 --- /dev/null +++ b/tests/components/schlage/test_diagnostics.py @@ -0,0 +1,23 @@ +"""Test Schlage diagnostics.""" + +from unittest.mock import Mock + +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_entry_diagnostics( + hass: HomeAssistant, + hass_client: ClientSessionGenerator, + mock_added_config_entry: MockConfigEntry, + mock_lock: Mock, +) -> None: + """Test Schlage diagnostics.""" + mock_lock.get_diagnostics.return_value = {"foo": "bar"} + diag = await get_diagnostics_for_config_entry( + hass, hass_client, mock_added_config_entry + ) + assert diag == {"locks": [{"foo": "bar"}]}