Skip to content

Commit

Permalink
[matter_yamltests] Be stricter about the response key for command tar…
Browse files Browse the repository at this point in the history
…getting group and disallow the use of the endpoint key (#27989)

Co-authored-by: Andrei Litvin <[email protected]>
  • Loading branch information
vivien-apple and andy31415 authored Jul 18, 2023
1 parent b0350f2 commit 70bb397
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 5 deletions.
11 changes: 11 additions & 0 deletions scripts/py_matter_yamltests/matter_yamltests/errors.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,17 @@ def __init__(self, content):
self.tag_key_with_error(content, 'response')


class TestStepGroupEndPointError(TestStepError):
"""Raise when a test step targeting a group of nodes targets an endpoint."""

def __init__(self, content):
message = 'Group command should not target an endpoint'
super().__init__(message)

self.tag_key_with_error(content, 'groupId')
self.tag_key_with_error(content, 'endpoint')


class TestStepVerificationStandaloneError(TestStepError):
"""Raise when a test step with a verification key is enabled and not interactive."""

Expand Down
13 changes: 8 additions & 5 deletions scripts/py_matter_yamltests/matter_yamltests/yaml_loader.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@

from typing import Tuple, Union

from .errors import (TestStepError, TestStepGroupResponseError, TestStepInvalidTypeError, TestStepKeyError,
TestStepNodeIdAndGroupIdError, TestStepResponseVariableError, TestStepValueAndValuesError,
from .errors import (TestStepError, TestStepGroupEndPointError, TestStepGroupResponseError, TestStepInvalidTypeError,
TestStepKeyError, TestStepNodeIdAndGroupIdError, TestStepResponseVariableError, TestStepValueAndValuesError,
TestStepVerificationStandaloneError, TestStepWaitResponseError)
from .fixes import add_yaml_support_for_scientific_notation_without_dot

Expand Down Expand Up @@ -115,6 +115,7 @@ def __check_test_step(self, config: dict, content):
self.__check(content, schema)
self.__rule_node_id_and_group_id_are_mutually_exclusive(content)
self.__rule_group_step_should_not_expect_a_response(content)
self.__rule_group_step_should_not_target_an_endpoint(content)
self.__rule_step_with_verification_should_be_disabled_or_interactive(
content)
self.__rule_wait_should_not_expect_a_response(content)
Expand Down Expand Up @@ -233,9 +234,11 @@ def __rule_node_id_and_group_id_are_mutually_exclusive(self, content):

def __rule_group_step_should_not_expect_a_response(self, content):
if 'groupId' in content and 'response' in content:
response = content.get('response')
if 'value' in response or 'values' in response:
raise TestStepGroupResponseError(content)
raise TestStepGroupResponseError(content)

def __rule_group_step_should_not_target_an_endpoint(self, content):
if 'groupId' in content and 'endpoint' in content:
raise TestStepGroupEndPointError(content)

def __rule_step_with_verification_should_be_disabled_or_interactive(self, content):
if 'verification' in content:
Expand Down

0 comments on commit 70bb397

Please sign in to comment.