Add WS outbound config to Shelly diagnostics (#124654)

Add WS Outbound config to diagnostics
This commit is contained in:
Maciej Bieniek 2024-08-26 21:17:38 +02:00 committed by GitHub
parent 7334fb0125
commit b960ebeb8b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 36 additions and 1 deletions

View file

@ -11,6 +11,7 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import format_mac
from .coordinator import ShellyConfigEntry
from .utils import get_rpc_ws_url
TO_REDACT = {CONF_USERNAME, CONF_PASSWORD}
@ -73,6 +74,12 @@ async def async_get_config_entry_diagnostics(
device_settings = {
k: v for k, v in rpc_coordinator.device.config.items() if k in ["cloud"]
}
ws_config = rpc_coordinator.device.config["ws"]
device_settings["ws_outbound_enabled"] = ws_config["enable"]
if ws_config["enable"]:
device_settings["ws_outbound_server_valid"] = bool(
ws_config["server"] == get_rpc_ws_url(hass)
)
device_status = {
k: v
for k, v in rpc_coordinator.device.status.items()

View file

@ -1,5 +1,6 @@
"""Tests for Shelly diagnostics platform."""
from copy import deepcopy
from unittest.mock import ANY, Mock, PropertyMock
from aioshelly.ble.const import BLE_SCAN_RESULT_EVENT
@ -151,7 +152,7 @@ async def test_rpc_config_entry_diagnostics(
"model": MODEL_25,
"sw_version": "some fw string",
},
"device_settings": {},
"device_settings": {"ws_outbound_enabled": False},
"device_status": {
"sys": {
"available_updates": {
@ -164,3 +165,30 @@ async def test_rpc_config_entry_diagnostics(
},
"last_error": "DeviceConnectionError()",
}
@pytest.mark.parametrize(
("ws_outbound_server", "ws_outbound_server_valid"),
[("ws://10.10.10.10:8123/api/shelly/ws", True), ("wrong_url", False)],
)
async def test_rpc_config_entry_diagnostics_ws_outbound(
hass: HomeAssistant,
hass_client: ClientSessionGenerator,
mock_rpc_device: Mock,
monkeypatch: pytest.MonkeyPatch,
ws_outbound_server: str,
ws_outbound_server_valid: bool,
) -> None:
"""Test config entry diagnostics for rpc device with websocket outbound."""
config = deepcopy(mock_rpc_device.config)
config["ws"] = {"enable": True, "server": ws_outbound_server}
monkeypatch.setattr(mock_rpc_device, "config", config)
entry = await init_integration(hass, 2, sleep_period=60)
result = await get_diagnostics_for_config_entry(hass, hass_client, entry)
assert (
result["device_settings"]["ws_outbound_server_valid"]
== ws_outbound_server_valid
)