mirror of
https://github.com/home-assistant/core.git
synced 2025-04-23 16:57:53 +00:00
Add diagnostics to Vodafone Station (#128923)
* Add diagnostics to Vodafone Station * cleanup and exclude props based on date
This commit is contained in:
parent
67e73173f6
commit
ada837ee95
47
homeassistant/components/vodafone_station/diagnostics.py
Normal file
47
homeassistant/components/vodafone_station/diagnostics.py
Normal file
@ -0,0 +1,47 @@
|
||||
"""Diagnostics support for Vodafone Station."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
|
||||
from homeassistant.components.diagnostics import async_redact_data
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
|
||||
from homeassistant.core import HomeAssistant
|
||||
|
||||
from .const import DOMAIN
|
||||
from .coordinator import VodafoneStationRouter
|
||||
|
||||
TO_REDACT = {CONF_USERNAME, CONF_PASSWORD}
|
||||
|
||||
|
||||
async def async_get_config_entry_diagnostics(
|
||||
hass: HomeAssistant, entry: ConfigEntry
|
||||
) -> dict[str, Any]:
|
||||
"""Return diagnostics for a config entry."""
|
||||
|
||||
coordinator: VodafoneStationRouter = hass.data[DOMAIN][entry.entry_id]
|
||||
|
||||
sensors_data = coordinator.data.sensors
|
||||
return {
|
||||
"entry": async_redact_data(entry.as_dict(), TO_REDACT),
|
||||
"device_info": {
|
||||
"sys_model_name": sensors_data.get("sys_model_name"),
|
||||
"sys_firmware_version": sensors_data["sys_firmware_version"],
|
||||
"sys_hardware_version": sensors_data["sys_hardware_version"],
|
||||
"sys_cpu_usage": sensors_data["sys_cpu_usage"][:-1],
|
||||
"sys_memory_usage": sensors_data["sys_memory_usage"][:-1],
|
||||
"sys_reboot_cause": sensors_data["sys_reboot_cause"],
|
||||
"last_update success": coordinator.last_update_success,
|
||||
"last_exception": coordinator.last_exception,
|
||||
"client_devices": [
|
||||
{
|
||||
"hostname": device_info.device.name,
|
||||
"connection_type": device_info.device.connection_type,
|
||||
"connected": device_info.device.connected,
|
||||
"type": device_info.device.type,
|
||||
}
|
||||
for _, device_info in coordinator.data.devices.items()
|
||||
],
|
||||
},
|
||||
}
|
@ -1,5 +1,7 @@
|
||||
"""Common stuff for Vodafone Station tests."""
|
||||
|
||||
from aiovodafone.api import VodafoneStationDevice
|
||||
|
||||
from homeassistant.components.vodafone_station.const import DOMAIN
|
||||
from homeassistant.const import CONF_DEVICES, CONF_HOST, CONF_PASSWORD, CONF_USERNAME
|
||||
|
||||
@ -16,3 +18,98 @@ MOCK_CONFIG = {
|
||||
}
|
||||
|
||||
MOCK_USER_DATA = MOCK_CONFIG[DOMAIN][CONF_DEVICES][0]
|
||||
|
||||
|
||||
DEVICE_DATA_QUERY = {
|
||||
"xx:xx:xx:xx:xx:xx": VodafoneStationDevice(
|
||||
connected=True,
|
||||
connection_type="wifi",
|
||||
ip_address="192.168.1.10",
|
||||
name="WifiDevice0",
|
||||
mac="xx:xx:xx:xx:xx:xx",
|
||||
type="laptop",
|
||||
wifi="2.4G",
|
||||
)
|
||||
}
|
||||
|
||||
SENSOR_DATA_QUERY = {
|
||||
"sys_serial_number": "M123456789",
|
||||
"sys_firmware_version": "XF6_4.0.05.04",
|
||||
"sys_bootloader_version": "0220",
|
||||
"sys_hardware_version": "RHG3006 v1",
|
||||
"omci_software_version": "\t\t1.0.0.1_41032\t\t\n",
|
||||
"sys_uptime": "12:16:41",
|
||||
"sys_cpu_usage": "97%",
|
||||
"sys_reboot_cause": "Web Reboot",
|
||||
"sys_memory_usage": "51.94%",
|
||||
"sys_wireless_driver_version": "17.10.188.75;17.10.188.75",
|
||||
"sys_wireless_driver_version_5g": "17.10.188.75;17.10.188.75",
|
||||
"vf_internet_key_online_since": "",
|
||||
"vf_internet_key_ip_addr": "0.0.0.0",
|
||||
"vf_internet_key_system": "0.0.0.0",
|
||||
"vf_internet_key_mode": "Auto",
|
||||
"sys_voip_version": "v02.01.00_01.13a\n",
|
||||
"sys_date_time": "20.10.2024 | 03:44 pm",
|
||||
"sys_build_time": "Sun Jun 23 17:55:49 CST 2024\n",
|
||||
"sys_model_name": "RHG3006",
|
||||
"inter_ip_address": "1.1.1.1",
|
||||
"inter_gateway": "1.1.1.2",
|
||||
"inter_primary_dns": "1.1.1.3",
|
||||
"inter_secondary_dns": "1.1.1.4",
|
||||
"inter_firewall": "601036",
|
||||
"inter_wan_ip_address": "1.1.1.1",
|
||||
"inter_ipv6_link_local_address": "",
|
||||
"inter_ipv6_link_global_address": "",
|
||||
"inter_ipv6_gateway": "",
|
||||
"inter_ipv6_prefix_delegation": "",
|
||||
"inter_ipv6_dns_address1": "",
|
||||
"inter_ipv6_dns_address2": "",
|
||||
"lan_ip_network": "192.168.0.1/24",
|
||||
"lan_default_gateway": "192.168.0.1",
|
||||
"lan_subnet_address_subnet1": "",
|
||||
"lan_mac_address": "11:22:33:44:55:66",
|
||||
"lan_dhcp_server": "601036",
|
||||
"lan_dhcpv6_server": "601036",
|
||||
"lan_router_advertisement": "601036",
|
||||
"lan_ipv6_default_gateway": "fe80::1",
|
||||
"lan_port1_switch_mode": "1301722",
|
||||
"lan_port2_switch_mode": "1301722",
|
||||
"lan_port3_switch_mode": "1301722",
|
||||
"lan_port4_switch_mode": "1301722",
|
||||
"lan_port1_switch_speed": "10",
|
||||
"lan_port2_switch_speed": "100",
|
||||
"lan_port3_switch_speed": "1000",
|
||||
"lan_port4_switch_speed": "1000",
|
||||
"lan_port1_switch_status": "1301724",
|
||||
"lan_port2_switch_status": "1301724",
|
||||
"lan_port3_switch_status": "1301724",
|
||||
"lan_port4_switch_status": "1301724",
|
||||
"wifi_status": "601036",
|
||||
"wifi_name": "Wifi-Main-Network",
|
||||
"wifi_mac_address": "AA:BB:CC:DD:EE:FF",
|
||||
"wifi_security": "401027",
|
||||
"wifi_channel": "8",
|
||||
"wifi_bandwidth": "573",
|
||||
"guest_wifi_status": "601037",
|
||||
"guest_wifi_name": "Wifi-Guest",
|
||||
"guest_wifi_mac_addr": "AA:BB:CC:DD:EE:GG",
|
||||
"guest_wifi_security": "401027",
|
||||
"guest_wifi_channel": "N/A",
|
||||
"guest_wifi_ip": "192.168.2.1",
|
||||
"guest_wifi_subnet_addr": "255.255.255.0",
|
||||
"guest_wifi_dhcp_server": "192.168.2.1",
|
||||
"wifi_status_5g": "601036",
|
||||
"wifi_name_5g": "Wifi-Main-Network",
|
||||
"wifi_mac_address_5g": "AA:BB:CC:DD:EE:HH",
|
||||
"wifi_security_5g": "401027",
|
||||
"wifi_channel_5g": "36",
|
||||
"wifi_bandwidth_5g": "4803",
|
||||
"guest_wifi_status_5g": "601037",
|
||||
"guest_wifi_name_5g": "Wifi-Guest",
|
||||
"guest_wifi_mac_addr_5g": "AA:BB:CC:DD:EE:II",
|
||||
"guest_wifi_channel_5g": "N/A",
|
||||
"guest_wifi_security_5g": "401027",
|
||||
"guest_wifi_ip_5g": "192.168.2.1",
|
||||
"guest_wifi_subnet_addr_5g": "255.255.255.0",
|
||||
"guest_wifi_dhcp_server_5g": "192.168.2.1",
|
||||
}
|
||||
|
@ -0,0 +1,43 @@
|
||||
# serializer version: 1
|
||||
# name: test_entry_diagnostics
|
||||
dict({
|
||||
'device_info': dict({
|
||||
'client_devices': list([
|
||||
dict({
|
||||
'connected': True,
|
||||
'connection_type': 'wifi',
|
||||
'hostname': 'WifiDevice0',
|
||||
'type': 'laptop',
|
||||
}),
|
||||
]),
|
||||
'last_exception': None,
|
||||
'last_update success': True,
|
||||
'sys_cpu_usage': '97',
|
||||
'sys_firmware_version': 'XF6_4.0.05.04',
|
||||
'sys_hardware_version': 'RHG3006 v1',
|
||||
'sys_memory_usage': '51.94',
|
||||
'sys_model_name': 'RHG3006',
|
||||
'sys_reboot_cause': 'Web Reboot',
|
||||
}),
|
||||
'entry': dict({
|
||||
'data': dict({
|
||||
'host': 'fake_host',
|
||||
'password': '**REDACTED**',
|
||||
'username': '**REDACTED**',
|
||||
}),
|
||||
'disabled_by': None,
|
||||
'discovery_keys': dict({
|
||||
}),
|
||||
'domain': 'vodafone_station',
|
||||
'minor_version': 1,
|
||||
'options': dict({
|
||||
}),
|
||||
'pref_disable_new_entities': False,
|
||||
'pref_disable_polling': False,
|
||||
'source': 'user',
|
||||
'title': 'Mock Title',
|
||||
'unique_id': None,
|
||||
'version': 1,
|
||||
}),
|
||||
})
|
||||
# ---
|
51
tests/components/vodafone_station/test_diagnostics.py
Normal file
51
tests/components/vodafone_station/test_diagnostics.py
Normal file
@ -0,0 +1,51 @@
|
||||
"""Tests for Vodafone Station diagnostics platform."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from unittest.mock import patch
|
||||
|
||||
from syrupy import SnapshotAssertion
|
||||
from syrupy.filters import props
|
||||
|
||||
from homeassistant.components.vodafone_station.const import DOMAIN
|
||||
from homeassistant.config_entries import ConfigEntryState
|
||||
from homeassistant.core import HomeAssistant
|
||||
|
||||
from .const import DEVICE_DATA_QUERY, MOCK_USER_DATA, SENSOR_DATA_QUERY
|
||||
|
||||
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,
|
||||
) -> None:
|
||||
"""Test config entry diagnostics."""
|
||||
entry = MockConfigEntry(domain=DOMAIN, data=MOCK_USER_DATA)
|
||||
entry.add_to_hass(hass)
|
||||
|
||||
with (
|
||||
patch("aiovodafone.api.VodafoneStationSercommApi.login"),
|
||||
patch(
|
||||
"aiovodafone.api.VodafoneStationSercommApi.get_devices_data",
|
||||
return_value=DEVICE_DATA_QUERY,
|
||||
),
|
||||
patch(
|
||||
"aiovodafone.api.VodafoneStationSercommApi.get_sensor_data",
|
||||
return_value=SENSOR_DATA_QUERY,
|
||||
),
|
||||
):
|
||||
await hass.config_entries.async_setup(entry.entry_id)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert entry.state == ConfigEntryState.LOADED
|
||||
assert await get_diagnostics_for_config_entry(hass, hass_client, entry) == snapshot(
|
||||
exclude=props(
|
||||
"entry_id",
|
||||
"created_at",
|
||||
"modified_at",
|
||||
)
|
||||
)
|
Loading…
x
Reference in New Issue
Block a user