Fix ZHA definition error on received command (#90602)

* Fix use of deprecated command schema access

* Add a unit test
This commit is contained in:
puddly 2023-03-31 14:53:42 -04:00 committed by GitHub
parent ad26317b75
commit 84eb9c5f97
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 3 deletions

View file

@ -58,15 +58,19 @@ class AttrReportConfig(TypedDict, total=True):
def parse_and_log_command(channel, tsn, command_id, args):
"""Parse and log a zigbee cluster command."""
cmd = channel.cluster.server_commands.get(command_id, [command_id])[0]
try:
name = channel.cluster.server_commands[command_id].name
except KeyError:
name = f"0x{command_id:02X}"
channel.debug(
"received '%s' command with %s args on cluster_id '%s' tsn '%s'",
cmd,
name,
args,
channel.cluster.cluster_id,
tsn,
)
return cmd
return name
def decorate_command(channel, command):

View file

@ -0,0 +1,19 @@
"""Test ZHA base channel module."""
from homeassistant.components.zha.core.channels.base import parse_and_log_command
from tests.components.zha.test_channels import ( # noqa: F401
channel_pool,
poll_control_ch,
zigpy_coordinator_device,
)
def test_parse_and_log_command(poll_control_ch): # noqa: F811
"""Test that `parse_and_log_command` correctly parses a known command."""
assert parse_and_log_command(poll_control_ch, 0x00, 0x01, []) == "fast_poll_stop"
def test_parse_and_log_command_unknown(poll_control_ch): # noqa: F811
"""Test that `parse_and_log_command` correctly parses an unknown command."""
assert parse_and_log_command(poll_control_ch, 0x00, 0xAB, []) == "0xAB"