Add diagnostics platform to Uptime Kuma (#148835)

This commit is contained in:
Manu 2025-07-15 20:19:14 +02:00 committed by GitHub
parent d14a0e0191
commit 648dce2fa3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 93 additions and 1 deletions

View File

@ -0,0 +1,23 @@
"""Diagnostics platform for Uptime Kuma."""
from __future__ import annotations
from dataclasses import asdict
from typing import Any
from homeassistant.components.diagnostics import async_redact_data
from homeassistant.core import HomeAssistant
from .coordinator import UptimeKumaConfigEntry
TO_REDACT = {"monitor_url", "monitor_hostname"}
async def async_get_config_entry_diagnostics(
hass: HomeAssistant, entry: UptimeKumaConfigEntry
) -> dict[str, Any]:
"""Return diagnostics for a config entry."""
return async_redact_data(
{k: asdict(v) for k, v in entry.runtime_data.data.items()}, TO_REDACT
)

View File

@ -43,7 +43,7 @@ rules:
# Gold
devices: done
diagnostics: todo
diagnostics: done
discovery-update-info:
status: exempt
comment: is not locally discoverable

View File

@ -0,0 +1,41 @@
# serializer version: 1
# name: test_diagnostics
dict({
'1': dict({
'monitor_cert_days_remaining': 90,
'monitor_cert_is_valid': 1,
'monitor_hostname': None,
'monitor_id': 1,
'monitor_name': 'Monitor 1',
'monitor_port': None,
'monitor_response_time': 120,
'monitor_status': 1,
'monitor_type': 'http',
'monitor_url': '**REDACTED**',
}),
'2': dict({
'monitor_cert_days_remaining': 0,
'monitor_cert_is_valid': 0,
'monitor_hostname': None,
'monitor_id': 2,
'monitor_name': 'Monitor 2',
'monitor_port': None,
'monitor_response_time': 28,
'monitor_status': 1,
'monitor_type': 'port',
'monitor_url': None,
}),
'3': dict({
'monitor_cert_days_remaining': 90,
'monitor_cert_is_valid': 1,
'monitor_hostname': None,
'monitor_id': 3,
'monitor_name': 'Monitor 3',
'monitor_port': None,
'monitor_response_time': 120,
'monitor_status': 0,
'monitor_type': 'json-query',
'monitor_url': '**REDACTED**',
}),
})
# ---

View File

@ -0,0 +1,28 @@
"""Tests Uptime Kuma diagnostics platform."""
import pytest
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
@pytest.mark.usefixtures("mock_pythonkuma")
async def test_diagnostics(
hass: HomeAssistant,
hass_client: ClientSessionGenerator,
config_entry: MockConfigEntry,
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
)