mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 13:17:32 +00:00
Change zha diagnostic to snapshot (#123198)
This commit is contained in:
parent
537d7728a7
commit
f51cc8fe12
266
tests/components/zha/snapshots/test_diagnostics.ambr
Normal file
266
tests/components/zha/snapshots/test_diagnostics.ambr
Normal file
@ -0,0 +1,266 @@
|
||||
# serializer version: 1
|
||||
# name: test_diagnostics_for_config_entry
|
||||
dict({
|
||||
'application_state': dict({
|
||||
'broadcast_counters': dict({
|
||||
}),
|
||||
'counters': dict({
|
||||
'ezsp_counters': dict({
|
||||
'counter_1': dict({
|
||||
'__type': "<class 'zigpy.state.Counter'>",
|
||||
'repr': "Counter(name='counter_1', _raw_value=1, reset_count=0, _last_reset_value=0)",
|
||||
}),
|
||||
'counter_2': dict({
|
||||
'__type': "<class 'zigpy.state.Counter'>",
|
||||
'repr': "Counter(name='counter_2', _raw_value=1, reset_count=0, _last_reset_value=0)",
|
||||
}),
|
||||
'counter_3': dict({
|
||||
'__type': "<class 'zigpy.state.Counter'>",
|
||||
'repr': "Counter(name='counter_3', _raw_value=1, reset_count=0, _last_reset_value=0)",
|
||||
}),
|
||||
}),
|
||||
}),
|
||||
'device_counters': dict({
|
||||
}),
|
||||
'group_counters': dict({
|
||||
}),
|
||||
'network_info': dict({
|
||||
'channel': 15,
|
||||
'channel_mask': 0,
|
||||
'children': list([
|
||||
]),
|
||||
'extended_pan_id': '**REDACTED**',
|
||||
'key_table': list([
|
||||
]),
|
||||
'metadata': dict({
|
||||
}),
|
||||
'network_key': '**REDACTED**',
|
||||
'nwk_addresses': dict({
|
||||
}),
|
||||
'nwk_manager_id': 0,
|
||||
'nwk_update_id': 0,
|
||||
'pan_id': 4660,
|
||||
'security_level': 0,
|
||||
'source': None,
|
||||
'stack_specific': dict({
|
||||
}),
|
||||
'tc_link_key': dict({
|
||||
'key': list([
|
||||
90,
|
||||
105,
|
||||
103,
|
||||
66,
|
||||
101,
|
||||
101,
|
||||
65,
|
||||
108,
|
||||
108,
|
||||
105,
|
||||
97,
|
||||
110,
|
||||
99,
|
||||
101,
|
||||
48,
|
||||
57,
|
||||
]),
|
||||
'partner_ieee': '**REDACTED**',
|
||||
'rx_counter': 0,
|
||||
'seq': 0,
|
||||
'tx_counter': 0,
|
||||
}),
|
||||
}),
|
||||
'node_info': dict({
|
||||
'ieee': '**REDACTED**',
|
||||
'logical_type': 2,
|
||||
'manufacturer': 'Coordinator Manufacturer',
|
||||
'model': 'Coordinator Model',
|
||||
'nwk': 0,
|
||||
'version': None,
|
||||
}),
|
||||
}),
|
||||
'config': dict({
|
||||
'device_config': dict({
|
||||
}),
|
||||
'enable_quirks': False,
|
||||
}),
|
||||
'config_entry': dict({
|
||||
'data': dict({
|
||||
'device': dict({
|
||||
'baudrate': 115200,
|
||||
'flow_control': 'hardware',
|
||||
'path': '/dev/ttyUSB0',
|
||||
}),
|
||||
'radio_type': 'ezsp',
|
||||
}),
|
||||
'disabled_by': None,
|
||||
'domain': 'zha',
|
||||
'minor_version': 1,
|
||||
'options': dict({
|
||||
'custom_configuration': dict({
|
||||
'zha_alarm_options': dict({
|
||||
'alarm_arm_requires_code': False,
|
||||
'alarm_failed_tries': 2,
|
||||
'alarm_master_code': '**REDACTED**',
|
||||
}),
|
||||
'zha_options': dict({
|
||||
'enhanced_light_transition': True,
|
||||
'group_members_assume_state': False,
|
||||
}),
|
||||
}),
|
||||
}),
|
||||
'pref_disable_new_entities': False,
|
||||
'pref_disable_polling': False,
|
||||
'source': 'user',
|
||||
'title': 'Mock Title',
|
||||
'unique_id': None,
|
||||
'version': 4,
|
||||
}),
|
||||
'devices': list([
|
||||
dict({
|
||||
'logical_type': 'Coordinator',
|
||||
'manufacturer': 'Coordinator Manufacturer',
|
||||
'model': 'Coordinator Model',
|
||||
}),
|
||||
dict({
|
||||
'logical_type': 'EndDevice',
|
||||
'manufacturer': 'FakeManufacturer',
|
||||
'model': 'FakeModel',
|
||||
}),
|
||||
]),
|
||||
'energy_scan': dict({
|
||||
'11': 4.313725490196078,
|
||||
'12': 4.705882352941177,
|
||||
'13': 5.098039215686274,
|
||||
'14': 5.490196078431373,
|
||||
'15': 5.882352941176471,
|
||||
'16': 6.2745098039215685,
|
||||
'17': 6.666666666666667,
|
||||
'18': 7.0588235294117645,
|
||||
'19': 7.450980392156863,
|
||||
'20': 7.8431372549019605,
|
||||
'21': 8.235294117647058,
|
||||
'22': 8.627450980392156,
|
||||
'23': 9.019607843137255,
|
||||
'24': 9.411764705882353,
|
||||
'25': 9.803921568627452,
|
||||
'26': 10.196078431372548,
|
||||
}),
|
||||
})
|
||||
# ---
|
||||
# name: test_diagnostics_for_device
|
||||
dict({
|
||||
'active_coordinator': False,
|
||||
'area_id': None,
|
||||
'available': True,
|
||||
'cluster_details': dict({
|
||||
'1': dict({
|
||||
'device_type': dict({
|
||||
'id': 1025,
|
||||
'name': 'IAS_ANCILLARY_CONTROL',
|
||||
}),
|
||||
'in_clusters': dict({
|
||||
'0x0500': dict({
|
||||
'attributes': dict({
|
||||
'0x0010': dict({
|
||||
'attribute_name': 'cie_addr',
|
||||
'value': list([
|
||||
50,
|
||||
79,
|
||||
50,
|
||||
2,
|
||||
0,
|
||||
141,
|
||||
21,
|
||||
0,
|
||||
]),
|
||||
}),
|
||||
}),
|
||||
'endpoint_attribute': 'ias_zone',
|
||||
'unsupported_attributes': dict({
|
||||
'0x0012': dict({
|
||||
'attribute_name': 'num_zone_sensitivity_levels_supported',
|
||||
}),
|
||||
'0x0013': dict({
|
||||
'attribute_name': 'current_zone_sensitivity_level',
|
||||
}),
|
||||
}),
|
||||
}),
|
||||
'0x0501': dict({
|
||||
'attributes': dict({
|
||||
}),
|
||||
'endpoint_attribute': 'ias_ace',
|
||||
'unsupported_attributes': dict({
|
||||
'0x1000': dict({
|
||||
}),
|
||||
'unknown_attribute_name': dict({
|
||||
}),
|
||||
}),
|
||||
}),
|
||||
}),
|
||||
'out_clusters': dict({
|
||||
}),
|
||||
'profile_id': 260,
|
||||
}),
|
||||
}),
|
||||
'device_type': 'EndDevice',
|
||||
'endpoint_names': list([
|
||||
dict({
|
||||
'name': 'IAS_ANCILLARY_CONTROL',
|
||||
}),
|
||||
]),
|
||||
'entities': list([
|
||||
dict({
|
||||
'entity_id': 'alarm_control_panel.fakemanufacturer_fakemodel_alarm_control_panel',
|
||||
'name': 'FakeManufacturer FakeModel',
|
||||
}),
|
||||
]),
|
||||
'ieee': '**REDACTED**',
|
||||
'lqi': None,
|
||||
'manufacturer': 'FakeManufacturer',
|
||||
'manufacturer_code': 4098,
|
||||
'model': 'FakeModel',
|
||||
'name': 'FakeManufacturer FakeModel',
|
||||
'neighbors': list([
|
||||
]),
|
||||
'nwk': 47004,
|
||||
'power_source': 'Mains',
|
||||
'quirk_applied': False,
|
||||
'quirk_class': 'zigpy.device.Device',
|
||||
'quirk_id': None,
|
||||
'routes': list([
|
||||
]),
|
||||
'rssi': None,
|
||||
'signature': dict({
|
||||
'endpoints': dict({
|
||||
'1': dict({
|
||||
'device_type': '0x0401',
|
||||
'input_clusters': list([
|
||||
'0x0500',
|
||||
'0x0501',
|
||||
]),
|
||||
'output_clusters': list([
|
||||
]),
|
||||
'profile_id': '0x0104',
|
||||
}),
|
||||
}),
|
||||
'manufacturer': 'FakeManufacturer',
|
||||
'model': 'FakeModel',
|
||||
'node_descriptor': dict({
|
||||
'aps_flags': 0,
|
||||
'complex_descriptor_available': 0,
|
||||
'descriptor_capability_field': 0,
|
||||
'frequency_band': 8,
|
||||
'logical_type': 2,
|
||||
'mac_capability_flags': 140,
|
||||
'manufacturer_code': 4098,
|
||||
'maximum_buffer_size': 82,
|
||||
'maximum_incoming_transfer_size': 82,
|
||||
'maximum_outgoing_transfer_size': 82,
|
||||
'reserved': 0,
|
||||
'server_mask': 0,
|
||||
'user_descriptor_available': 0,
|
||||
}),
|
||||
}),
|
||||
'user_given_name': None,
|
||||
})
|
||||
# ---
|
@ -3,11 +3,11 @@
|
||||
from unittest.mock import patch
|
||||
|
||||
import pytest
|
||||
from syrupy.assertion import SnapshotAssertion
|
||||
from syrupy.filters import props
|
||||
from zigpy.profiles import zha
|
||||
from zigpy.zcl.clusters import security
|
||||
|
||||
from homeassistant.components.diagnostics import REDACTED
|
||||
from homeassistant.components.zha.diagnostics import KEYS_TO_REDACT
|
||||
from homeassistant.components.zha.helpers import (
|
||||
ZHADeviceProxy,
|
||||
ZHAGatewayProxy,
|
||||
@ -27,14 +27,6 @@ from tests.components.diagnostics import (
|
||||
)
|
||||
from tests.typing import ClientSessionGenerator
|
||||
|
||||
CONFIG_ENTRY_DIAGNOSTICS_KEYS = [
|
||||
"config",
|
||||
"config_entry",
|
||||
"application_state",
|
||||
"versions",
|
||||
"devices",
|
||||
]
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def required_platforms_only():
|
||||
@ -51,6 +43,7 @@ async def test_diagnostics_for_config_entry(
|
||||
config_entry: MockConfigEntry,
|
||||
setup_zha,
|
||||
zigpy_device_mock,
|
||||
snapshot: SnapshotAssertion,
|
||||
) -> None:
|
||||
"""Test diagnostics for config entry."""
|
||||
|
||||
@ -81,30 +74,9 @@ async def test_diagnostics_for_config_entry(
|
||||
hass, hass_client, config_entry
|
||||
)
|
||||
|
||||
for key in CONFIG_ENTRY_DIAGNOSTICS_KEYS:
|
||||
assert key in diagnostics_data
|
||||
assert diagnostics_data[key] is not None
|
||||
|
||||
# Energy scan results are presented as a percentage. JSON object keys also must be
|
||||
# strings, not integers.
|
||||
assert diagnostics_data["energy_scan"] == {
|
||||
str(k): 100 * v / 255 for k, v in scan.items()
|
||||
}
|
||||
|
||||
assert isinstance(diagnostics_data["devices"], list)
|
||||
assert len(diagnostics_data["devices"]) == 2
|
||||
assert diagnostics_data["devices"] == [
|
||||
{
|
||||
"manufacturer": "Coordinator Manufacturer",
|
||||
"model": "Coordinator Model",
|
||||
"logical_type": "Coordinator",
|
||||
},
|
||||
{
|
||||
"manufacturer": "FakeManufacturer",
|
||||
"model": "FakeModel",
|
||||
"logical_type": "EndDevice",
|
||||
},
|
||||
]
|
||||
assert diagnostics_data == snapshot(
|
||||
exclude=props("created_at", "modified_at", "entry_id", "versions")
|
||||
)
|
||||
|
||||
|
||||
async def test_diagnostics_for_device(
|
||||
@ -114,6 +86,7 @@ async def test_diagnostics_for_device(
|
||||
config_entry: MockConfigEntry,
|
||||
setup_zha,
|
||||
zigpy_device_mock,
|
||||
snapshot: SnapshotAssertion,
|
||||
) -> None:
|
||||
"""Test diagnostics for device."""
|
||||
await setup_zha()
|
||||
@ -161,11 +134,5 @@ async def test_diagnostics_for_device(
|
||||
diagnostics_data = await get_diagnostics_for_device(
|
||||
hass, hass_client, config_entry, device
|
||||
)
|
||||
assert diagnostics_data
|
||||
device_info: dict = zha_device_proxy.zha_device_info
|
||||
for key in device_info:
|
||||
assert key in diagnostics_data
|
||||
if key not in KEYS_TO_REDACT:
|
||||
assert key in diagnostics_data
|
||||
else:
|
||||
assert diagnostics_data[key] == REDACTED
|
||||
|
||||
assert diagnostics_data == snapshot(exclude=props("device_reg_id", "last_seen"))
|
||||
|
Loading…
x
Reference in New Issue
Block a user