diff --git a/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml b/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml index ff6b06f573fcd3..bd1b171364e62f 100644 --- a/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml @@ -53,24 +53,25 @@ tests: saveAs: th1FabricIndex - label: - "Step 3 & 4: TH1 puts DUT into commissioning mode, TH2 commissions DUT + "Step 2 & 3: TH1 puts DUT into commissioning mode, TH2 commissions DUT using admin node ID N2" verification: | - Open a commissioning window On TH1(Chiptool)using below command + ./chip-tool pairing open-commissioning-window 1 1 400 2000 3841 - ./chip-tool pairing open-commissioning-window 1 1 400 2000 3841 + On TH1(chip-tool) note the manual pairing code for commissioning the TH2 - [1657186324.710951][10820:10825] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0000 Status=0x0 - [1657186324.710980][10820:10825] CHIP:CTL: Successfully opened pairing window On TH(Chiptool)e device - [1657186324.711048][10820:10825] CHIP:CTL: Manual pairing code: [36253605617] - [1657186324.711108][10820:10825] CHIP:CTL: SetupQRCode: [MT:-24J0IRV01A7TB7E700] + [1684416077.831754][118314:118316] CHIP:CTL: Successfully opened pairing window on the device + [1684416077.831763][118314:118316] CHIP:CTL: Manual pairing code: [36283142515] + [1684416077.831771][118314:118316] CHIP:CTL: SetupQRCode: [MT:-24J0IRV010UJE7ZH10] + [1684416077.831791][118314:118316] CHIP:DMG: ICR moving to [AwaitingDe] + ./chip-tool pairing code 2 36283142515 --commissioner-name beta - Commission TH2(Chiptool) to DUT using manualcode generated in TH1 using open commission window + On TH2 (chip-tool) verify the commissioning completed with success - ./chip-tool pairing code 2 36253605617 --commissioner-name beta --commissioner-nodeid 223344 - [1657186359.584672][3509:3514] CHIP:CTL: Successfully finished commissioning step 'Cleanup' - [1657186359.584743][3509:3514] CHIP:TOO: Device commissioning completed with success + [1684416247.482777][118352:118354] CHIP:CTL: Successfully finished commissioning step 'Cleanup' + [1684416247.482789][118352:118354] CHIP:TOO: Device commissioning completed with success + [1684416247.482823][118352:118354] CHIP:DMG: ICR moving to [AwaitingDe] cluster: "LogCommands" command: "UserPrompt" PICS: PICS_SKIP_SAMPLE_APP @@ -132,12 +133,33 @@ tests: - label: "TH2 reads the fabric index" identity: "beta" + PICS: PICS_SDK_CI_ONLY cluster: "Operational Credentials" command: "readAttribute" attribute: "CurrentFabricIndex" response: saveAs: th2FabricIndex + #Issue https://github.com/CHIP-Specifications/chip-certification-tool/issues/768 + - label: "TH2 reads the fabric index" + verification: | + ./chip-tool operationalcredentials read current-fabric-index 2 0 --commissioner-name beta + + On TH2 (chip-tool) note the CurrentFabricIndex for the further use + + [1684416368.885484][118383:118385] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0005 DataVersion: 3654336520 + [1684416368.885511][118383:118385] CHIP:TOO: CurrentFabricIndex: 2 + [1684416368.885577][118383:118385] CHIP:EM: <<< [E:65212i S:18077 M:83303022 (Ack:184536262)] (S) Msg TX to 2:0000000000000002 [C33E] --- Type 0000:10 (SecureChannel:StandaloneAck) + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" + - label: "Read the commissioner node ID from the alpha fabric" identity: "alpha" cluster: "CommissionerCommands" @@ -171,6 +193,7 @@ tests: ] - label: "Read the commissioner node ID from the beta fabric" + PICS: PICS_SDK_CI_ONLY identity: "beta" cluster: "CommissionerCommands" command: "GetCommissionerNodeId" @@ -181,6 +204,7 @@ tests: - label: "TH2 writes ACL giving view privilge for basic cluster" identity: beta + PICS: PICS_SDK_CI_ONLY command: "writeAttribute" attribute: "ACL" arguments: @@ -203,6 +227,28 @@ tests: }, ] + #Issue https://github.com/CHIP-Specifications/chip-certification-tool/issues/768 + - label: "TH2 writes ACL giving view privilge for basic cluster" + verification: | + ./chip-tool accesscontrol write acl '[{"fabricIndex": 2, "privilege": 5, "authMode": 2, "subjects": [223344], "targets": [{ "cluster": 31, "endpoint": 0, "deviceType": null }]}, {"fabricIndex": 2, "privilege": 1, "authMode": 2, "subjects": null, "targets": [{ "cluster": 40, "endpoint": 0, "deviceType": null }]}]' 2 0 --commissioner-name beta + + On TH2 (chip-tool) verify the success response for the write function + + [1684416510.660175][118418:118420] CHIP:DMG: StatusIB = + [1684416510.660184][118418:118420] CHIP:DMG: { + [1684416510.660192][118418:118420] CHIP:DMG: status = 0x00 (SUCCESS), + [1684416510.660201][118418:118420] CHIP:DMG: }, + [1684416510.660211][118418:118420] CHIP:DMG: + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" + - label: "TH1 reads descriptor cluster - expect SUCCESS" command: "readAttribute" cluster: "Descriptor" @@ -217,18 +263,61 @@ tests: - label: "TH2 reads descriptor cluster - expect UNSUPPORTED_ACCESS" identity: "beta" + PICS: PICS_SDK_CI_ONLY command: "readAttribute" cluster: "Descriptor" attribute: "DeviceTypeList" response: error: UNSUPPORTED_ACCESS + #Issue https://github.com/CHIP-Specifications/chip-certification-tool/issues/768 + - label: "TH2 reads descriptor cluster - expect UNSUPPORTED_ACCESS" + verification: | + ./chip-tool descriptor read device-type-list 2 0 --commissioner-name beta + + On TH2(chip-tool) verify the UNSUPPORTED_ACCESS (0x7e) response + + [1684416700.274460][118482:118484] CHIP:DMG: StatusIB = + [1684416700.274467][118482:118484] CHIP:DMG: { + [1684416700.274475][118482:118484] CHIP:DMG: status = 0x7e (UNSUPPORTED_ACCESS), + [1684416700.274482][118482:118484] CHIP:DMG: }, + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" + - label: "TH2 reads basic cluster - expect SUCCESS" identity: "beta" + PICS: PICS_SDK_CI_ONLY command: "readAttribute" cluster: "Basic Information" attribute: "VendorID" + #Issue https://github.com/CHIP-Specifications/chip-certification-tool/issues/768 + - label: "TH2 writes Extension attribute value as empty list" + verification: | + ./chip-tool basicinformation read vendor-id 2 0 --commissioner-name beta + + On TH2(chip-tool) verify the success with the Vendor-id + + [1684416789.682243][118505:118507] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0002 DataVersion: 2033462723 + [1684416789.682271][118505:118507] CHIP:TOO: VendorID: 65521 + [1684416789.682327][118505:118507] CHIP:EM: <<< [E:11340i S:29188 M:208193949 (Ack:232576417)] (S) Msg TX to 2:0000000000000002 [C33E] --- Type 0000:10 (SecureChannel:StandaloneAck) + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" + - label: "TH1 resets ACL to default" command: "writeAttribute" attribute: "ACL" @@ -245,8 +334,33 @@ tests: - label: "TH1 sends RemoveFabric command for TH2" cluster: "Operational Credentials" + PICS: PICS_SDK_CI_ONLY command: "RemoveFabric" arguments: values: - name: "FabricIndex" value: th2FabricIndex + + #Issue https://github.com/CHIP-Specifications/chip-certification-tool/issues/768 + - label: "TH1 sends RemoveFabric command for TH2" + verification: | + ./chip-tool operationalcredentials remove-fabric 2 1 0 + + On TH1(chip-tool) verify the success with the nocresponse with statuscode is success(0) + + [1684416866.004187][118527:118529] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 + [1684416866.004214][118527:118529] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0008 + [1684416866.004236][118527:118529] CHIP:TOO: NOCResponse: { + [1684416866.004250][118527:118529] CHIP:TOO: statusCode: 0 + [1684416866.004255][118527:118529] CHIP:TOO: fabricIndex: 2 + [1684416866.004259][118527:118529] CHIP:TOO: } + [1684416866.004270][118527:118529] CHIP:DMG: ICR moving to [AwaitingDe] + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_ACE_1_6.yaml b/src/app/tests/suites/certification/Test_TC_ACE_1_6.yaml new file mode 100644 index 00000000000000..d241d40ab6f720 --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_ACE_1_6.yaml @@ -0,0 +1,672 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default + +name: 42.1.6. [TC-ACE-1.6] Group auth mode + +PICS: + - MCORE.ROLE.COMMISSIONEE + - G.S + +config: + nodeId: 0x12344321 + cluster: "Basic Information" + endpoint: 0 + +tests: + - label: "PreCondition" + verification: | + N1 is the node ID of TH1 + + PIXIT.G.ENDPOINT is an endpoint with a groups cluster + disabled: true + + - label: + "TH sends KeySetWrite command in the GroupKeyManagement cluster to DUT + using a key that is pre-installed on the TH. GroupKeySet fields are as + follows: GroupKeySetID: 0x01a3 GroupKeySecurityPolicy: TrustFirst (0) + EpochKey0: d0d1d2d3d4d5d6d7d8d9dadbdcdddedf EpochStartTime0: 2220000 + EpochKey1: d1d1d2d3d4d5d6d7d8d9dadbdcdddedf EpochStartTime1: 2220001 + EpochKey2: d2d1d2d3d4d5d6d7d8d9dadbdcdddedf EpochStartTime2: 2220002" + verification: | + ./chip-tool groupkeymanagement key-set-write '{"groupKeySetID": 419,"groupKeySecurityPolicy": 0, "epochKey0":"d0d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime0": 2220000,"epochKey1":"d1d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime1": 2220001,"epochKey2":"d2d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime2": 2220002 }' 1 0 + Verify DUT sends SUCCESS(0x00) response on TH(chip-tool) Logs: + + [1685009144.716477][39659:39661] CHIP:DMG: ICR moving to [ResponseRe] + [1685009144.716485][39659:39661] CHIP:DMG: InvokeResponseMessage = + [1685009144.716487][39659:39661] CHIP:DMG: { + [1685009144.716489][39659:39661] CHIP:DMG: suppressResponse = false, + [1685009144.716491][39659:39661] CHIP:DMG: InvokeResponseIBs = + [1685009144.716495][39659:39661] CHIP:DMG: [ + [1685009144.716497][39659:39661] CHIP:DMG: InvokeResponseIB = + [1685009144.716500][39659:39661] CHIP:DMG: { + [1685009144.716502][39659:39661] CHIP:DMG: CommandStatusIB = + [1685009144.716505][39659:39661] CHIP:DMG: { + [1685009144.716507][39659:39661] CHIP:DMG: CommandPathIB = + [1685009144.716510][39659:39661] CHIP:DMG: { + [1685009144.716512][39659:39661] CHIP:DMG: EndpointId = 0x0, + [1685009144.716515][39659:39661] CHIP:DMG: ClusterId = 0x3f, + [1685009144.716517][39659:39661] CHIP:DMG: CommandId = 0x0, + [1685009144.716519][39659:39661] CHIP:DMG: }, + [1685009144.716523][39659:39661] CHIP:DMG: + [1685009144.716525][39659:39661] CHIP:DMG: StatusIB = + [1685009144.716527][39659:39661] CHIP:DMG: { + [1685009144.716530][39659:39661] CHIP:DMG: status = 0x00 (SUCCESS), + [1685009144.716532][39659:39661] CHIP:DMG: }, + [1685009144.716534][39659:39661] CHIP:DMG: + [1685009144.716537][39659:39661] CHIP:DMG: }, + [1685009144.716539][39659:39661] CHIP:DMG: + [1685009144.716541][39659:39661] CHIP:DMG: }, + [1685009144.716545][39659:39661] CHIP:DMG: + [1685009144.716546][39659:39661] CHIP:DMG: ], + [1685009144.716550][39659:39661] CHIP:DMG: + [1685009144.716552][39659:39661] CHIP:DMG: InteractionModelRevision = 1 + [1685009144.716554][39659:39661] CHIP:DMG: }, + [1685009144.716563][39659:39661] CHIP:DMG: R + disabled: true + + - label: + "TH binds GroupIds 0x0103, 0x0104, 0x0105 with GroupKeySetID 0x01a3 in + the GroupKeyMap attribute list on GroupKeyManagement cluster by + writing the GroupKeyMap attribute with three entries as follows: List + item 1: GroupId: 0x0103 GroupKeySetId: 0x01a3 List item 2: GroupId: + 0x0104 GroupKeySetId: 0x01a3 List item 3: GroupId: 0x0105 + GroupKeySetId: 0x01a3" + verification: | + ./chip-tool groupkeymanagement write group-key-map '[{"groupId": 259, "groupKeySetID": 419, "fabricIndex": 1},{"groupId": 260, "groupKeySetID": 419, "fabricIndex": 1},{"groupId": 261, "groupKeySetID": 419, "fabricIndex": 1}]' 1 0 + Verify DUT sends SUCCESS(0x00) response on TH(chip-tool) Logs: + + [1685009176.921320][39681:39683] CHIP:EM: Rxd Ack; Removing MessageCounter:177869766 from Retrans Table on exchange 12527i + [1685009176.921325][39681:39683] CHIP:DMG: WriteClient moving to [ResponseRe] + [1685009176.921337][39681:39683] CHIP:DMG: WriteResponseMessage = + [1685009176.921339][39681:39683] CHIP:DMG: { + [1685009176.921341][39681:39683] CHIP:DMG: AttributeStatusIBs = + [1685009176.921344][39681:39683] CHIP:DMG: [ + [1685009176.921346][39681:39683] CHIP:DMG: AttributeStatusIB = + [1685009176.921349][39681:39683] CHIP:DMG: { + [1685009176.921351][39681:39683] CHIP:DMG: AttributePathIB = + [1685009176.921354][39681:39683] CHIP:DMG: { + [1685009176.921356][39681:39683] CHIP:DMG: Endpoint = 0x0, + [1685009176.921359][39681:39683] CHIP:DMG: Cluster = 0x3f, + [1685009176.921361][39681:39683] CHIP:DMG: Attribute = 0x0000_0000, + [1685009176.921365][39681:39683] CHIP:DMG: } + [1685009176.921368][39681:39683] CHIP:DMG: + [1685009176.921370][39681:39683] CHIP:DMG: StatusIB = + [1685009176.921373][39681:39683] CHIP:DMG: { + [1685009176.921375][39681:39683] CHIP:DMG: status = 0x00 (SUCCESS), + [1685009176.921377][39681:39683] CHIP:DMG: }, + [1685009176.921380][39681:39683] CHIP:DMG: + [1685009176.921381][39681:39683] CHIP:DMG: }, + [1685009176.921385][39681:39683] CHIP:DMG: + [1685009176.921387][39681:39683] CHIP:DMG: AttributeStatusIB = + [1685009176.921389][39681:39683] CHIP:DMG: { + [1685009176.921391][39681:39683] CHIP:DMG: AttributePathIB = + [1685009176.921393][39681:39683] CHIP:DMG: { + [1685009176.921396][39681:39683] CHIP:DMG: Endpoint = 0x0, + [1685009176.921399][39681:39683] CHIP:DMG: Cluster = 0x3f, + [1685009176.921401][39681:39683] CHIP:DMG: Attribute = 0x0000_0000, + [1685009176.921403][39681:39683] CHIP:DMG: ListIndex = Null, + [1685009176.921405][39681:39683] CHIP:DMG: } + [1685009176.921409][39681:39683] CHIP:DMG: + [1685009176.921411][39681:39683] CHIP:DMG: StatusIB = + [1685009176.921413][39681:39683] CHIP:DMG: { + [1685009176.921416][39681:39683] CHIP:DMG: status = 0x00 (SUCCESS), + [1685009176.921418][39681:39683] CHIP:DMG: }, + [1685009176.921421][39681:39683] CHIP:DMG: + [1685009176.921423][39681:39683] CHIP:DMG: }, + [1685009176.921428][39681:39683] CHIP:DMG: + [1685009176.921430][39681:39683] CHIP:DMG: AttributeStatusIB = + [1685009176.921432][39681:39683] CHIP:DMG: { + [1685009176.921434][39681:39683] CHIP:DMG: AttributePathIB = + [1685009176.921436][39681:39683] CHIP:DMG: { + [1685009176.921438][39681:39683] CHIP:DMG: Endpoint = 0x0, + [1685009176.921440][39681:39683] CHIP:DMG: Cluster = 0x3f, + [1685009176.921443][39681:39683] CHIP:DMG: Attribute = 0x0000_0000, + [1685009176.921445][39681:39683] CHIP:DMG: ListIndex = Null, + [1685009176.921447][39681:39683] CHIP:DMG: } + [1685009176.921450][39681:39683] CHIP:DMG: + [1685009176.921452][39681:39683] CHIP:DMG: StatusIB = + [1685009176.921456][39681:39683] CHIP:DMG: { + [1685009176.921458][39681:39683] CHIP:DMG: status = 0x00 (SUCCESS), + [1685009176.921462][39681:39683] CHIP:DMG: }, + [1685009176.921464][39681:39683] CHIP:DMG: + [1685009176.921466][39681:39683] CHIP:DMG: }, + [1685009176.921470][39681:39683] CHIP:DMG: + [1685009176.921472][39681:39683] CHIP:DMG: AttributeStatusIB = + [1685009176.921475][39681:39683] CHIP:DMG: { + [1685009176.921477][39681:39683] CHIP:DMG: AttributePathIB = + [1685009176.921479][39681:39683] CHIP:DMG: { + [1685009176.921481][39681:39683] CHIP:DMG: Endpoint = 0x0, + [1685009176.921483][39681:39683] CHIP:DMG: Cluster = 0x3f, + [1685009176.921485][39681:39683] CHIP:DMG: Attribute = 0x0000_0000, + [1685009176.921488][39681:39683] CHIP:DMG: ListIndex = Null, + [1685009176.921491][39681:39683] CHIP:DMG: } + [1685009176.921494][39681:39683] CHIP:DMG: + [1685009176.921496][39681:39683] CHIP:DMG: StatusIB = + [1685009176.921499][39681:39683] CHIP:DMG: { + [1685009176.921501][39681:39683] CHIP:DMG: status = 0x00 (SUCCESS), + [1685009176.921503][39681:39683] CHIP:DMG: }, + [1685009176.921506][39681:39683] CHIP:DMG: + [1685009176.921508][39681:39683] CHIP:DMG: }, + [1685009176.921511][39681:39683] CHIP:DMG: + [1685009176.921513][39681:39683] CHIP:DMG: ], + [1685009176.921519][39681:39683] CHIP:DMG: + [1685009176.921521][39681:39683] CHIP:DMG: InteractionModelRevision = 1 + [1685009176.921523][39681:39683] CHIP:DMG: } + [1685009176.921551][39681:39683] CHIP:DMG: WriteClient moving to [AwaitingDe] + disabled: true + + - label: + "TH sends a AddGroup Command to the Groups cluster on Endpoint + PIXIT.G.ENDPOINT over CASE with the GroupID field set to 0x0103 and + the GroupName set to an empty string" + verification: | + ./chip-tool groups add-group 259 'grp1' 1 0 + + Verify DUT sends a AddGroupResponse with Status is set to SUCCESS and GroupID is set to 0x0103(Decimal 259) on TH(chip-tool) Logs: + + [1685009217.899494][39693:39695] CHIP:DMG: ICR moving to [ResponseRe] + [1685009217.899525][39693:39695] CHIP:DMG: InvokeResponseMessage = + [1685009217.899534][39693:39695] CHIP:DMG: { + [1685009217.899546][39693:39695] CHIP:DMG: suppressResponse = false, + [1685009217.899558][39693:39695] CHIP:DMG: InvokeResponseIBs = + [1685009217.899571][39693:39695] CHIP:DMG: [ + [1685009217.899578][39693:39695] CHIP:DMG: InvokeResponseIB = + [1685009217.899599][39693:39695] CHIP:DMG: { + [1685009217.899606][39693:39695] CHIP:DMG: CommandDataIB = + [1685009217.899616][39693:39695] CHIP:DMG: { + [1685009217.899625][39693:39695] CHIP:DMG: CommandPathIB = + [1685009217.899644][39693:39695] CHIP:DMG: { + [1685009217.899654][39693:39695] CHIP:DMG: EndpointId = 0x0, + [1685009217.899665][39693:39695] CHIP:DMG: ClusterId = 0x4, + [1685009217.899674][39693:39695] CHIP:DMG: CommandId = 0x0, + [1685009217.899689][39693:39695] CHIP:DMG: }, + [1685009217.899701][39693:39695] CHIP:DMG: + [1685009217.899713][39693:39695] CHIP:DMG: CommandFields = + [1685009217.899725][39693:39695] CHIP:DMG: { + [1685009217.899736][39693:39695] CHIP:DMG: 0x0 = 0, + [1685009217.899745][39693:39695] CHIP:DMG: 0x1 = 259, + [1685009217.899759][39693:39695] CHIP:DMG: }, + [1685009217.899766][39693:39695] CHIP:DMG: }, + [1685009217.899778][39693:39695] CHIP:DMG: + [1685009217.899785][39693:39695] CHIP:DMG: }, + [1685009217.899797][39693:39695] CHIP:DMG: + [1685009217.899804][39693:39695] CHIP:DMG: ], + [1685009217.899816][39693:39695] CHIP:DMG: + [1685009217.899824][39693:39695] CHIP:DMG: InteractionModelRevision = 1 + [1685009217.899831][39693:39695] CHIP:DMG: }, + [1685009217.899865][39693:39695] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0004 Command=0x0000_0000 + [1685009217.899888][39693:39695] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0004 Command 0x0000_0000 + [1685009217.899919][39693:39695] CHIP:TOO: AddGroupResponse: { + [1685009217.899930][39693:39695] CHIP:TOO: status: 0 + [1685009217.899938][39693:39695] CHIP:TOO: groupID: 259 + [1685009217.899946][39693:39695] CHIP:TOO: } + disabled: true + + - label: + "TH writes The ACL attribute in the Access Control cluster to add + Manage privileges for group 0x0103 and maintain the current + administrative privileges for the TH on the Access Control cluster. + The following access control list shall be used: List item 1 (TH + admin): Privilege: Administer (5) AuthMode: CASE (2) Subjects: [N1] + Targets: [{Cluster: AccessControl (0x001f), Endpoint: 0}] List item 2 + (group Manage access): Privilege: Manage (4) AuthMode: Group (3) + Subjects: group 0x0103 ([0x0103]) Targets: {Cluster: Groups (0x001d), + Endpoint: PIXIT.G.ENDPOINT}" + verification: | + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": [{ "cluster": 31, "endpoint": 0, "deviceType": null }]},{ "privilege": 4, "authMode": 3, "subjects": [259], "targets": [{ "cluster": 4, "endpoint": 0, "deviceType": null }]}]' 1 0 + + Verify DUT sends SUCCESS(0x00) response on TH(chip-tool) Logs: + + [1685009242.316884][39710:39712] CHIP:EM: Rxd Ack; Removing MessageCounter:79745670 from Retrans Table on exchange 23078i + [1685009242.316900][39710:39712] CHIP:DMG: WriteClient moving to [ResponseRe] + [1685009242.316933][39710:39712] CHIP:DMG: WriteResponseMessage = + [1685009242.316942][39710:39712] CHIP:DMG: { + [1685009242.316947][39710:39712] CHIP:DMG: AttributeStatusIBs = + [1685009242.316962][39710:39712] CHIP:DMG: [ + [1685009242.316970][39710:39712] CHIP:DMG: AttributeStatusIB = + [1685009242.316993][39710:39712] CHIP:DMG: { + [1685009242.317002][39710:39712] CHIP:DMG: AttributePathIB = + [1685009242.317016][39710:39712] CHIP:DMG: { + [1685009242.317031][39710:39712] CHIP:DMG: Endpoint = 0x0, + [1685009242.317045][39710:39712] CHIP:DMG: Cluster = 0x1f, + [1685009242.317054][39710:39712] CHIP:DMG: Attribute = 0x0000_0000, + [1685009242.317064][39710:39712] CHIP:DMG: } + [1685009242.317079][39710:39712] CHIP:DMG: + [1685009242.317087][39710:39712] CHIP:DMG: StatusIB = + [1685009242.317099][39710:39712] CHIP:DMG: { + [1685009242.317109][39710:39712] CHIP:DMG: status = 0x00 (SUCCESS), + [1685009242.317120][39710:39712] CHIP:DMG: }, + [1685009242.317131][39710:39712] CHIP:DMG: + [1685009242.317140][39710:39712] CHIP:DMG: }, + [1685009242.317159][39710:39712] CHIP:DMG: + [1685009242.317167][39710:39712] CHIP:DMG: AttributeStatusIB = + [1685009242.317175][39710:39712] CHIP:DMG: { + [1685009242.317185][39710:39712] CHIP:DMG: AttributePathIB = + [1685009242.317195][39710:39712] CHIP:DMG: { + [1685009242.317206][39710:39712] CHIP:DMG: Endpoint = 0x0, + [1685009242.317218][39710:39712] CHIP:DMG: Cluster = 0x1f, + [1685009242.317229][39710:39712] CHIP:DMG: Attribute = 0x0000_0000, + [1685009242.317243][39710:39712] CHIP:DMG: ListIndex = Null, + [1685009242.317251][39710:39712] CHIP:DMG: } + [1685009242.317265][39710:39712] CHIP:DMG: + [1685009242.317272][39710:39712] CHIP:DMG: StatusIB = + [1685009242.317281][39710:39712] CHIP:DMG: { + [1685009242.317291][39710:39712] CHIP:DMG: status = 0x00 (SUCCESS), + [1685009242.317301][39710:39712] CHIP:DMG: }, + [1685009242.317310][39710:39712] CHIP:DMG: + [1685009242.317320][39710:39712] CHIP:DMG: }, + [1685009242.317336][39710:39712] CHIP:DMG: + [1685009242.317342][39710:39712] CHIP:DMG: AttributeStatusIB = + [1685009242.317353][39710:39712] CHIP:DMG: { + [1685009242.317362][39710:39712] CHIP:DMG: AttributePathIB = + [1685009242.317373][39710:39712] CHIP:DMG: { + [1685009242.317384][39710:39712] CHIP:DMG: Endpoint = 0x0, + [1685009242.317398][39710:39712] CHIP:DMG: Cluster = 0x1f, + [1685009242.317406][39710:39712] CHIP:DMG: Attribute = 0x0000_0000, + [1685009242.317417][39710:39712] CHIP:DMG: ListIndex = Null, + [1685009242.317427][39710:39712] CHIP:DMG: } + [1685009242.317441][39710:39712] CHIP:DMG: + [1685009242.317449][39710:39712] CHIP:DMG: StatusIB = + [1685009242.317460][39710:39712] CHIP:DMG: { + [1685009242.317471][39710:39712] CHIP:DMG: status = 0x00 (SUCCESS), + [1685009242.317481][39710:39712] CHIP:DMG: }, + [1685009242.317491][39710:39712] CHIP:DMG: + [1685009242.317502][39710:39712] CHIP:DMG: }, + [1685009242.317515][39710:39712] CHIP:DMG: + [1685009242.317523][39710:39712] CHIP:DMG: ], + [1685009242.317544][39710:39712] CHIP:DMG: + [1685009242.317551][39710:39712] CHIP:DMG: InteractionModelRevision = 1 + [1685009242.317558][39710:39712] CHIP:DMG: } + [1685009242.317637][39710:39712] CHIP:DMG: WriteClient moving to [AwaitingDe] + disabled: true + + - label: + "TH sends a AddGroup Command to the Groups cluster on Endpoint + PIXIT.G.ENDPOINT over CASE with the GroupID field set to 0x0104 and + the GroupName set to an empty string" + verification: | + ./chip-tool groups add-group 260 '' 1 0 + Verify DUT sends 0x7e (UNSUPPORTED_ACCESS) response on TH(chip-tool) Logs: + + [1685009266.594913][39716:39718] CHIP:EM: Rxd Ack; Removing MessageCounter:18030850 from Retrans Table on exchange 59871i + [1685009266.594918][39716:39718] CHIP:DMG: ICR moving to [ResponseRe] + [1685009266.594926][39716:39718] CHIP:DMG: InvokeResponseMessage = + [1685009266.594928][39716:39718] CHIP:DMG: { + [1685009266.594930][39716:39718] CHIP:DMG: suppressResponse = false, + [1685009266.594932][39716:39718] CHIP:DMG: InvokeResponseIBs = + [1685009266.594935][39716:39718] CHIP:DMG: [ + [1685009266.594937][39716:39718] CHIP:DMG: InvokeResponseIB = + [1685009266.594941][39716:39718] CHIP:DMG: { + [1685009266.594944][39716:39718] CHIP:DMG: CommandStatusIB = + [1685009266.594947][39716:39718] CHIP:DMG: { + [1685009266.594949][39716:39718] CHIP:DMG: CommandPathIB = + [1685009266.594951][39716:39718] CHIP:DMG: { + [1685009266.594954][39716:39718] CHIP:DMG: EndpointId = 0x0, + [1685009266.594956][39716:39718] CHIP:DMG: ClusterId = 0x4, + [1685009266.594959][39716:39718] CHIP:DMG: CommandId = 0x0, + [1685009266.594961][39716:39718] CHIP:DMG: }, + [1685009266.594964][39716:39718] CHIP:DMG: + [1685009266.594966][39716:39718] CHIP:DMG: StatusIB = + [1685009266.594969][39716:39718] CHIP:DMG: { + [1685009266.594971][39716:39718] CHIP:DMG: status = 0x7e (UNSUPPORTED_ACCESS), + [1685009266.594973][39716:39718] CHIP:DMG: }, + [1685009266.594976][39716:39718] CHIP:DMG: + [1685009266.594978][39716:39718] CHIP:DMG: }, + [1685009266.594980][39716:39718] CHIP:DMG: + [1685009266.594982][39716:39718] CHIP:DMG: }, + [1685009266.594985][39716:39718] CHIP:DMG: + [1685009266.594987][39716:39718] CHIP:DMG: ], + [1685009266.594990][39716:39718] CHIP:DMG: + [1685009266.594992][39716:39718] CHIP:DMG: InteractionModelRevision = 1 + [1685009266.594994][39716:39718] CHIP:DMG: } + disabled: true + + - label: + "TH sends a AddGroup Command to the Groups cluster with the GroupID + field set to 0x0104 and the GroupName set to an empty string. The + command is sent as a group command using GroupID 0x0103" + verification: | + ./chip-tool groups add-group 260 '' 0xffffffffffff0103 0 + disabled: true + + - label: + "TH sends a AddGroup Command to the Groups cluster with the GroupID + field set to 0x0105 and the GroupName set to an empty string. The + command is sent as a group command using GroupID 0x0104" + verification: | + ./chip-tool groups add-group 261 '' 0xffffffffffff0104 1 + disabled: true + + - label: + "TH writes The ACL attribute in the Access Control cluster to revoke + groups Management access and restore full access over CASE by setting + the following ACL list items: List item 1 (TH admin): Privilege: + Administer (5) AuthMode: CASE (2) Subjects: [N1] Targets: null" + verification: | + ./chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null }]' 1 0 + + Verify DUT sends SUCCESS(0x00) response on TH(chip-tool) Logs: + + 1685009349.509571][39773:39775] CHIP:DMG: WriteResponseMessage = + [1685009349.509581][39773:39775] CHIP:DMG: { + [1685009349.509588][39773:39775] CHIP:DMG: AttributeStatusIBs = + [1685009349.509602][39773:39775] CHIP:DMG: [ + [1685009349.509610][39773:39775] CHIP:DMG: AttributeStatusIB = + [1685009349.509620][39773:39775] CHIP:DMG: { + [1685009349.509628][39773:39775] CHIP:DMG: AttributePathIB = + [1685009349.509642][39773:39775] CHIP:DMG: { + [1685009349.509652][39773:39775] CHIP:DMG: Endpoint = 0x0, + [1685009349.509662][39773:39775] CHIP:DMG: Cluster = 0x1f, + [1685009349.509672][39773:39775] CHIP:DMG: Attribute = 0x0000_0000, + [1685009349.509684][39773:39775] CHIP:DMG: } + [1685009349.509696][39773:39775] CHIP:DMG: + [1685009349.509704][39773:39775] CHIP:DMG: StatusIB = + [1685009349.509713][39773:39775] CHIP:DMG: { + [1685009349.509721][39773:39775] CHIP:DMG: status = 0x00 (SUCCESS), + [1685009349.509733][39773:39775] CHIP:DMG: }, + [1685009349.509742][39773:39775] CHIP:DMG: + [1685009349.509750][39773:39775] CHIP:DMG: }, + [1685009349.509771][39773:39775] CHIP:DMG: + [1685009349.509778][39773:39775] CHIP:DMG: AttributeStatusIB = + [1685009349.509786][39773:39775] CHIP:DMG: { + [1685009349.509794][39773:39775] CHIP:DMG: AttributePathIB = + [1685009349.509802][39773:39775] CHIP:DMG: { + [1685009349.509811][39773:39775] CHIP:DMG: Endpoint = 0x0, + [1685009349.509820][39773:39775] CHIP:DMG: Cluster = 0x1f, + [1685009349.509829][39773:39775] CHIP:DMG: Attribute = 0x0000_0000, + [1685009349.509838][39773:39775] CHIP:DMG: ListIndex = Null, + [1685009349.509846][39773:39775] CHIP:DMG: } + [1685009349.509858][39773:39775] CHIP:DMG: + [1685009349.509866][39773:39775] CHIP:DMG: StatusIB = + [1685009349.509873][39773:39775] CHIP:DMG: { + [1685009349.509882][39773:39775] CHIP:DMG: status = 0x00 (SUCCESS), + [1685009349.509890][39773:39775] CHIP:DMG: }, + [1685009349.509900][39773:39775] CHIP:DMG: + [1685009349.509907][39773:39775] CHIP:DMG: }, + [1685009349.509919][39773:39775] CHIP:DMG: + [1685009349.509926][39773:39775] CHIP:DMG: ], + [1685009349.509942][39773:39775] CHIP:DMG: + [1685009349.509949][39773:39775] CHIP:DMG: InteractionModelRevision = 1 + [1685009349.509959][39773:39775] CHIP:DMG: } + disabled: true + + - label: + "TH sends a ViewGroup Command to the Groups cluster on Endpoint + PIXIT.G.ENDPOINT over CASE with the GroupID set to 0x0104 to confirm + that the AddGroup command from step 6 was successful" + verification: | + ./chip-tool groups view-group 0x0104 1 0 + + Verify DUT sends a ViewGroupResponse with Status is set to SUCCESS and GroupID is set to 0x0104(Decimal 260) on TH(chip-tool) Logs: + + [1685009378.715933][39785:39787] CHIP:EM: Rxd Ack; Removing MessageCounter:100204976 from Retrans Table on exchange 10510i + [1685009378.715944][39785:39787] CHIP:DMG: ICR moving to [ResponseRe] + [1685009378.715968][39785:39787] CHIP:DMG: InvokeResponseMessage = + [1685009378.715977][39785:39787] CHIP:DMG: { + [1685009378.715985][39785:39787] CHIP:DMG: suppressResponse = false, + [1685009378.715994][39785:39787] CHIP:DMG: InvokeResponseIBs = + [1685009378.716007][39785:39787] CHIP:DMG: [ + [1685009378.716015][39785:39787] CHIP:DMG: InvokeResponseIB = + [1685009378.716027][39785:39787] CHIP:DMG: { + [1685009378.716035][39785:39787] CHIP:DMG: CommandDataIB = + [1685009378.716044][39785:39787] CHIP:DMG: { + [1685009378.716051][39785:39787] CHIP:DMG: CommandPathIB = + [1685009378.716061][39785:39787] CHIP:DMG: { + [1685009378.716070][39785:39787] CHIP:DMG: EndpointId = 0x0, + [1685009378.716080][39785:39787] CHIP:DMG: ClusterId = 0x4, + [1685009378.716088][39785:39787] CHIP:DMG: CommandId = 0x1, + [1685009378.716097][39785:39787] CHIP:DMG: }, + [1685009378.716107][39785:39787] CHIP:DMG: + [1685009378.716115][39785:39787] CHIP:DMG: CommandFields = + [1685009378.716124][39785:39787] CHIP:DMG: { + [1685009378.716134][39785:39787] CHIP:DMG: 0x0 = 0, + [1685009378.716143][39785:39787] CHIP:DMG: 0x1 = 260, + [1685009378.716154][39785:39787] CHIP:DMG: 0x2 = "" (0 chars), + [1685009378.716164][39785:39787] CHIP:DMG: }, + [1685009378.716172][39785:39787] CHIP:DMG: }, + [1685009378.716184][39785:39787] CHIP:DMG: + [1685009378.716191][39785:39787] CHIP:DMG: }, + [1685009378.716203][39785:39787] CHIP:DMG: + [1685009378.716210][39785:39787] CHIP:DMG: ], + [1685009378.716224][39785:39787] CHIP:DMG: + [1685009378.716231][39785:39787] CHIP:DMG: InteractionModelRevision = 1 + [1685009378.716238][39785:39787] CHIP:DMG: }, + [1685009378.716275][39785:39787] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0004 Command=0x0000_0001 + [1685009378.716295][39785:39787] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0004 Command 0x0000_0001 + [1685009378.716326][39785:39787] CHIP:TOO: ViewGroupResponse: { + [1685009378.716337][39785:39787] CHIP:TOO: status: 0 + [1685009378.716349][39785:39787] CHIP:TOO: groupID: 260 + [1685009378.716356][39785:39787] CHIP:TOO: groupName: + [1685009378.716365][39785:39787] CHIP:TOO: } + disabled: true + + - label: + "TH sends a ViewGroup Command to the Groups cluster on Endpoint + PIXIT.G.ENDPOINT over CASE with the GroupID set to 0x0105 to confirm + that the AddGroup command from step 7 was not successful" + verification: | + ./chip-tool groups view-group 0x0105 1 0 + + [1685009398.600826][39795:39797] CHIP:DMG: InvokeResponseMessage = + [1685009398.600828][39795:39797] CHIP:DMG: { + [1685009398.600831][39795:39797] CHIP:DMG: suppressResponse = false, + [1685009398.600833][39795:39797] CHIP:DMG: InvokeResponseIBs = + [1685009398.600838][39795:39797] CHIP:DMG: [ + [1685009398.600840][39795:39797] CHIP:DMG: InvokeResponseIB = + [1685009398.600845][39795:39797] CHIP:DMG: { + [1685009398.600847][39795:39797] CHIP:DMG: CommandDataIB = + [1685009398.600850][39795:39797] CHIP:DMG: { + [1685009398.600853][39795:39797] CHIP:DMG: CommandPathIB = + [1685009398.600856][39795:39797] CHIP:DMG: { + [1685009398.600859][39795:39797] CHIP:DMG: EndpointId = 0x0, + [1685009398.600862][39795:39797] CHIP:DMG: ClusterId = 0x4, + [1685009398.600865][39795:39797] CHIP:DMG: CommandId = 0x1, + [1685009398.600867][39795:39797] CHIP:DMG: }, + [1685009398.600871][39795:39797] CHIP:DMG: + [1685009398.600874][39795:39797] CHIP:DMG: CommandFields = + [1685009398.600876][39795:39797] CHIP:DMG: { + [1685009398.600880][39795:39797] CHIP:DMG: 0x0 = 139, + [1685009398.600883][39795:39797] CHIP:DMG: 0x1 = 261, + [1685009398.600886][39795:39797] CHIP:DMG: 0x2 = "" (0 chars), + [1685009398.600889][39795:39797] CHIP:DMG: }, + [1685009398.600892][39795:39797] CHIP:DMG: }, + [1685009398.600896][39795:39797] CHIP:DMG: + [1685009398.600898][39795:39797] CHIP:DMG: }, + [1685009398.600902][39795:39797] CHIP:DMG: + [1685009398.600904][39795:39797] CHIP:DMG: ], + [1685009398.600908][39795:39797] CHIP:DMG: + [1685009398.600911][39795:39797] CHIP:DMG: InteractionModelRevision = 1 + [1685009398.600913][39795:39797] CHIP:DMG: }, + [1685009398.600925][39795:39797] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0004 Command=0x0000_0001 + [1685009398.600932][39795:39797] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0004 Command 0x0000_0001 + [1685009398.600944][39795:39797] CHIP:TOO: ViewGroupResponse: { + [1685009398.600949][39795:39797] CHIP:TOO: status: 139 + [1685009398.600952][39795:39797] CHIP:TOO: groupID: 261 + [1685009398.600955][39795:39797] CHIP:TOO: groupName: + [1685009398.600957][39795:39797] CHIP:TOO: } + [1685009398.600964][39795:39797] CHIP:DMG: ICR moving to [AwaitingDe] + disabled: true + + - label: + "TH sends a AddGroup Command to the Groups cluster with the GroupID + field set to 0x0105 and the GroupName set to an empty string. The + command is sent as a group command using GroupID 0x0103" + verification: | + ./chip-tool groups add-group 261 '' 0xffffffffffff0103 0 + disabled: true + + - label: + "TH sends a ViewGroup Command to the Groups cluster on Endpoint + PIXIT.G.ENDPOINT over CASE with the GroupID set to 0x0105 to confirm + that the AddGroup command from step 11 was not successful" + verification: | + ./chip-tool groups view-group 261 1 0 + Verify DUT sends a ViewGroupResponse with Status is set to NOT_FOUND and GroupID is set to 0x0105(Decimal 261) on TH(chip-tool) Logs: + + [1685009503.554279][40130:40132] CHIP:DMG: InvokeResponseMessage = + [1685009503.554289][40130:40132] CHIP:DMG: { + [1685009503.554295][40130:40132] CHIP:DMG: suppressResponse = false, + [1685009503.554303][40130:40132] CHIP:DMG: InvokeResponseIBs = + [1685009503.554315][40130:40132] CHIP:DMG: [ + [1685009503.554321][40130:40132] CHIP:DMG: InvokeResponseIB = + [1685009503.554331][40130:40132] CHIP:DMG: { + [1685009503.554340][40130:40132] CHIP:DMG: CommandDataIB = + [1685009503.554346][40130:40132] CHIP:DMG: { + [1685009503.554351][40130:40132] CHIP:DMG: CommandPathIB = + [1685009503.554361][40130:40132] CHIP:DMG: { + [1685009503.554370][40130:40132] CHIP:DMG: EndpointId = 0x0, + [1685009503.554380][40130:40132] CHIP:DMG: ClusterId = 0x4, + [1685009503.554389][40130:40132] CHIP:DMG: CommandId = 0x1, + [1685009503.554397][40130:40132] CHIP:DMG: }, + [1685009503.554407][40130:40132] CHIP:DMG: + [1685009503.554416][40130:40132] CHIP:DMG: CommandFields = + [1685009503.554425][40130:40132] CHIP:DMG: { + [1685009503.554436][40130:40132] CHIP:DMG: 0x0 = 139, + [1685009503.554445][40130:40132] CHIP:DMG: 0x1 = 261, + [1685009503.554456][40130:40132] CHIP:DMG: 0x2 = "" (0 chars), + [1685009503.554466][40130:40132] CHIP:DMG: }, + [1685009503.554474][40130:40132] CHIP:DMG: }, + [1685009503.554486][40130:40132] CHIP:DMG: + [1685009503.554493][40130:40132] CHIP:DMG: }, + [1685009503.554506][40130:40132] CHIP:DMG: + [1685009503.554513][40130:40132] CHIP:DMG: ], + [1685009503.554526][40130:40132] CHIP:DMG: + [1685009503.554534][40130:40132] CHIP:DMG: InteractionModelRevision = 1 + [1685009503.554541][40130:40132] CHIP:DMG: }, + [1685009503.554583][40130:40132] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0004 Command=0x0000_0001 + [1685009503.554604][40130:40132] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0004 Command 0x0000_0001 + [1685009503.554637][40130:40132] CHIP:TOO: ViewGroupResponse: { + [1685009503.554653][40130:40132] CHIP:TOO: status: 139 + [1685009503.554662][40130:40132] CHIP:TOO: groupID: 261 + [1685009503.554670][40130:40132] CHIP:TOO: groupName: + [1685009503.554678][40130:40132] CHIP:TOO: } + [1685009503.554698][40130:40132] CHIP:DMG: ICR moving + disabled: true + + - label: + "TH sends the RemoveAllGroups Command to the Groups cluster on + Endpoint PIXIT.G.ENDPOINT over CASE" + verification: | + ./chip-tool groups remove-all-groups 1 0 + + + Verify DUT sends SUCCESS(0x00) response on TH(chip-tool) Logs: + + [1685009534.554583][40143:40145] CHIP:DMG: InvokeResponseMessage = + [1685009534.554585][40143:40145] CHIP:DMG: { + [1685009534.554588][40143:40145] CHIP:DMG: suppressResponse = false, + [1685009534.554590][40143:40145] CHIP:DMG: InvokeResponseIBs = + [1685009534.554594][40143:40145] CHIP:DMG: [ + [1685009534.554596][40143:40145] CHIP:DMG: InvokeResponseIB = + [1685009534.554600][40143:40145] CHIP:DMG: { + [1685009534.554602][40143:40145] CHIP:DMG: CommandStatusIB = + [1685009534.554605][40143:40145] CHIP:DMG: { + [1685009534.554607][40143:40145] CHIP:DMG: CommandPathIB = + [1685009534.554610][40143:40145] CHIP:DMG: { + [1685009534.554613][40143:40145] CHIP:DMG: EndpointId = 0x0, + [1685009534.554616][40143:40145] CHIP:DMG: ClusterId = 0x4, + [1685009534.554618][40143:40145] CHIP:DMG: CommandId = 0x4, + [1685009534.554620][40143:40145] CHIP:DMG: }, + [1685009534.554624][40143:40145] CHIP:DMG: + [1685009534.554626][40143:40145] CHIP:DMG: StatusIB = + [1685009534.554628][40143:40145] CHIP:DMG: { + [1685009534.554631][40143:40145] CHIP:DMG: status = 0x00 (SUCCESS), + [1685009534.554633][40143:40145] CHIP:DMG: }, + [1685009534.554637][40143:40145] CHIP:DMG: + [1685009534.554640][40143:40145] CHIP:DMG: }, + [1685009534.554644][40143:40145] CHIP:DMG: + [1685009534.554646][40143:40145] CHIP:DMG: }, + [1685009534.554650][40143:40145] CHIP:DMG: + [1685009534.554652][40143:40145] CHIP:DMG: ], + [1685009534.554656][40143:40145] CHIP:DMG: + [1685009534.554658][40143:40145] CHIP:DMG: InteractionModelRevision = 1 + [1685009534.554660][40143:40145] CHIP:DMG: }, + disabled: true + + - label: + "TH resets the GroupKeyMap attribute list on GroupKeyManagement + cluster by writing the GroupKeyMap attribute with an empty list" + verification: | + ./chip-tool groupkeymanagement write group-key-map '[ ]' 1 0 + + Verify DUT sends SUCCESS(0x00) response on TH(chip-tool) Logs: + + [1685010006.001015][40429:40431] CHIP:DMG: WriteClient moving to [ResponseRe] + [1685010006.001022][40429:40431] CHIP:DMG: WriteResponseMessage = + [1685010006.001025][40429:40431] CHIP:DMG: { + [1685010006.001026][40429:40431] CHIP:DMG: AttributeStatusIBs = + [1685010006.001030][40429:40431] CHIP:DMG: [ + [1685010006.001032][40429:40431] CHIP:DMG: AttributeStatusIB = + [1685010006.001034][40429:40431] CHIP:DMG: { + [1685010006.001037][40429:40431] CHIP:DMG: AttributePathIB = + [1685010006.001039][40429:40431] CHIP:DMG: { + [1685010006.001043][40429:40431] CHIP:DMG: Endpoint = 0x0, + [1685010006.001045][40429:40431] CHIP:DMG: Cluster = 0x3f, + [1685010006.001047][40429:40431] CHIP:DMG: Attribute = 0x0000_0000, + [1685010006.001050][40429:40431] CHIP:DMG: } + [1685010006.001053][40429:40431] CHIP:DMG: + [1685010006.001055][40429:40431] CHIP:DMG: StatusIB = + [1685010006.001057][40429:40431] CHIP:DMG: { + [1685010006.001059][40429:40431] CHIP:DMG: status = 0x00 (SUCCESS), + [1685010006.001061][40429:40431] CHIP:DMG: }, + [1685010006.001064][40429:40431] CHIP:DMG: + [1685010006.001066][40429:40431] CHIP:DMG: }, + [1685010006.001068][40429:40431] CHIP:DMG: + [1685010006.001070][40429:40431] CHIP:DMG: ], + [1685010006.001073][40429:40431] CHIP:DMG: + [1685010006.001075][40429:40431] CHIP:DMG: InteractionModelRevision = 1 + [1685010006.001077][40429:40431] CHIP:DMG: } + disabled: true + + - label: + "TH resets the key set by sending the KeySetRemove command to the + GroupKeyManagement cluster over CASE with the following fields: + GroupKeySetID: 0x01a3" + verification: | + ./chip-tool groupkeymanagement key-set-remove "0x01a3" 1 0 + + Verify DUT sends SUCCESS(0x00) response on TH(chip-tool) Logs: + + [1685009579.433397][40206:40208] CHIP:DMG: InvokeResponseMessage = + [1685009579.433405][40206:40208] CHIP:DMG: { + [1685009579.433413][40206:40208] CHIP:DMG: suppressResponse = false, + [1685009579.433420][40206:40208] CHIP:DMG: InvokeResponseIBs = + [1685009579.433434][40206:40208] CHIP:DMG: [ + [1685009579.433441][40206:40208] CHIP:DMG: InvokeResponseIB = + [1685009579.433453][40206:40208] CHIP:DMG: { + [1685009579.433461][40206:40208] CHIP:DMG: CommandStatusIB = + [1685009579.433470][40206:40208] CHIP:DMG: { + [1685009579.433478][40206:40208] CHIP:DMG: CommandPathIB = + [1685009579.433493][40206:40208] CHIP:DMG: { + [1685009579.433503][40206:40208] CHIP:DMG: EndpointId = 0x0, + [1685009579.433519][40206:40208] CHIP:DMG: ClusterId = 0x3f, + [1685009579.433528][40206:40208] CHIP:DMG: CommandId = 0x3, + [1685009579.433536][40206:40208] CHIP:DMG: }, + [1685009579.433549][40206:40208] CHIP:DMG: + [1685009579.433557][40206:40208] CHIP:DMG: StatusIB = + [1685009579.433567][40206:40208] CHIP:DMG: { + [1685009579.433576][40206:40208] CHIP:DMG: status = 0x00 (SUCCESS), + [1685009579.433594][40206:40208] CHIP:DMG: }, + [1685009579.433603][40206:40208] CHIP:DMG: + [1685009579.433614][40206:40208] CHIP:DMG: }, + [1685009579.433625][40206:40208] CHIP:DMG: + [1685009579.433632][40206:40208] CHIP:DMG: }, + [1685009579.433641][40206:40208] CHIP:DMG: + [1685009579.433649][40206:40208] CHIP:DMG: ], + [1685009579.433661][40206:40208] CHIP:DMG: + [1685009579.433668][40206:40208] CHIP:DMG: InteractionModelRevision = 1 + [1685009579.433676][40206:40208] CHIP:DMG: }, + [1685009579.433713][40206:40208] CHIP:DMG: Rece + disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_SC_5_3.yaml b/src/app/tests/suites/certification/Test_TC_SC_5_3.yaml index 4827111fe1685a..24b8e69392dbec 100644 --- a/src/app/tests/suites/certification/Test_TC_SC_5_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_SC_5_3.yaml @@ -13,10 +13,11 @@ # limitations under the License. # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default -name: 19.1.3. [TC-SC-5.3] Sending a group message - DUT to TH +name: 18.1.3. [TC-SC-5.3] Sending a group message - DUT to TH PICS: - MCORE.ROLE.COMMISSIONER + - GRPKEY.C config: nodeId: 0x12344321 @@ -33,92 +34,265 @@ tests: verification: | DUT and TH are commissioned. - DUT and TH are part of a common group. - Run TC-SC-6.1 to establish this precondition. + DUT supports Groups Cluster disabled: true - label: "TH should have the ACL entry with the AuthMode as Group by DUT" verification: | + ./chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null },{"fabricIndex": 1, "privilege": 4, "authMode": 3, "subjects": [259], "targets": null }]' 1 0 + ./chip-tool accesscontrol read acl 1 0 - Verify the Read Request Message for the data sent in the above command on TH(Reference app)log - - [1653571830.010685][3949:3949] CHIP:IM: Received Read request - [1653571830.010772][3949:3949] CHIP:DMG: ReadRequestMessage = - [1653571830.010822][3949:3949] CHIP:DMG: { - [1653571830.010863][3949:3949] CHIP:DMG: AttributePathIBs = - [1653571830.010911][3949:3949] CHIP:DMG: [ - [1653571830.010957][3949:3949] CHIP:DMG: AttributePathIB = - [1653571830.011020][3949:3949] CHIP:DMG: { - [1653571830.011072][3949:3949] CHIP:DMG: Endpoint = 0x0, - [1653571830.011132][3949:3949] CHIP:DMG: Cluster = 0x1f, - [1653571830.011191][3949:3949] CHIP:DMG: Attribute = 0x0000_0000, - [1653571830.011246][3949:3949] CHIP:DMG: } - [1653571830.011299][3949:3949] CHIP:DMG: - [1653571830.011350][3949:3949] CHIP:DMG: ], - [1653571830.011401][3949:3949] CHIP:DMG: - [1653571830.011451][3949:3949] CHIP:DMG: isFabricFiltered = true, - [1653571830.011499][3949:3949] CHIP:DMG: InteractionModelRevision = 1 - [1653571830.011543][3949:3949] CHIP:DMG: }, - [1653571830.011711][3949:3949] CHIP:DMG: IM RH moving to [GeneratingReports] - [1653571830.011855][3949:3949] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1653571830.011907][3949:3949] CHIP:DMG: Cluster 1f, Attribute 0 is dirty - [1653571830.011947][3949:3949] CHIP:DMG: Reading attribute: Cluster=0x0000_001F Endpoint=0 AttributeId=0x0000_0000 (expanded=0) - [1653571830.011995][3949:3949] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_001F e=0 p=a - [1653571830.012053][3949:3949] CHIP:DMG: AccessControl: allowed + Verify that ACL entry with the AuthMode as Group is present on TH(Reference app)log: + + [1684162707.651064][28541:28543] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_0000 DataVersion: 1331379855 + [1684162707.651080][28541:28543] CHIP:TOO: ACL: 2 entries + [1684162707.651089][28541:28543] CHIP:TOO: [1]: { + [1684162707.651095][28541:28543] CHIP:TOO: Privilege: 5 + [1684162707.651097][28541:28543] CHIP:TOO: AuthMode: 2 + [1684162707.651100][28541:28543] CHIP:TOO: Subjects: 1 entries + [1684162707.651103][28541:28543] CHIP:TOO: [1]: 112233 + [1684162707.651105][28541:28543] CHIP:TOO: Targets: null + [1684162707.651107][28541:28543] CHIP:TOO: FabricIndex: 1 + [1684162707.651109][28541:28543] CHIP:TOO: } + [1684162707.651113][28541:28543] CHIP:TOO: [2]: { + [1684162707.651115][28541:28543] CHIP:TOO: Privilege: 4 + [1684162707.651117][28541:28543] CHIP:TOO: AuthMode: 3 + [1684162707.651119][28541:28543] CHIP:TOO: Subjects: 1 entries + [1684162707.651122][28541:28543] CHIP:TOO: [1]: 259 + [1684162707.651124][28541:28543] CHIP:TOO: Targets: null + [1684162707.651126][28541:28543] CHIP:TOO: FabricIndex: 1 + [1684162707.651128][28541:28543] CHIP:TOO: } + disabled: true + + - label: + "DUT generates fabric-unique GroupID, GroupName, random key, EpochKey0 + and GroupKeySetID. Save the GroupID as GroupID_1, GroupName as + GroupName_1 and GroupSetID" + PICS: GRPKEY.C.C00.Tx + verification: | + GroupKeySetID = 419 + GroupID_1 = 259 + GroupName_1 = "grp1" + disabled: true + + - label: + "DUT sends KeySetWrite command to GroupKeyManagement cluster to TH on + EP0" + PICS: GRPKEY.C.C00.Tx + verification: | + ./chip-tool groupkeymanagement key-set-write '{"groupKeySetID": 419,"groupKeySecurityPolicy": 0, "epochKey0":"d0d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime0": 2220000,"epochKey1":"d1d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime1": 2220001,"epochKey2":"d2d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime2": 2220002 }' 1 0 + + Verify that KeySetWrite with Group Set ID as 419 is present on TH(Reference app)log: + + [1684162878.418032][28333:28333] CHIP:DMG: { + [1684162878.418034][28333:28333] CHIP:DMG: suppressResponse = false, + [1684162878.418038][28333:28333] CHIP:DMG: timedRequest = false, + [1684162878.418040][28333:28333] CHIP:DMG: InvokeRequests = + [1684162878.418044][28333:28333] CHIP:DMG: [ + [1684162878.418046][28333:28333] CHIP:DMG: CommandDataIB = + [1684162878.418048][28333:28333] CHIP:DMG: { + [1684162878.418050][28333:28333] CHIP:DMG: CommandPathIB = + [1684162878.418054][28333:28333] CHIP:DMG: { + [1684162878.418057][28333:28333] CHIP:DMG: EndpointId = 0x0, + [1684162878.418059][28333:28333] CHIP:DMG: ClusterId = 0x3f, + [1684162878.418062][28333:28333] CHIP:DMG: CommandId = 0x0, + [1684162878.418065][28333:28333] CHIP:DMG: }, + [1684162878.418068][28333:28333] CHIP:DMG: + [1684162878.418071][28333:28333] CHIP:DMG: CommandFields = + [1684162878.418074][28333:28333] CHIP:DMG: { + [1684162878.418077][28333:28333] CHIP:DMG: 0x0 = + [1684162878.418079][28333:28333] CHIP:DMG: { + [1684162878.418083][28333:28333] CHIP:DMG: 0x0 = 419, + [1684162878.418087][28333:28333] CHIP:DMG: 0x1 = 0, + [1684162878.418090][28333:28333] CHIP:DMG: 0x2 = [ + [1684162878.418094][28333:28333] CHIP:DMG: 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + [1684162878.418099][28333:28333] CHIP:DMG: ] (16 bytes) + [1684162878.418102][28333:28333] CHIP:DMG: 0x3 = 2220000, + [1684162878.418105][28333:28333] CHIP:DMG: 0x4 = [ + [1684162878.418110][28333:28333] CHIP:DMG: 0xd1, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + [1684162878.418115][28333:28333] CHIP:DMG: ] (16 bytes) + [1684162878.418135][28333:28333] CHIP:DMG: 0x5 = 2220001, + [1684162878.418138][28333:28333] CHIP:DMG: 0x6 = [ + [1684162878.418143][28333:28333] CHIP:DMG: 0xd2, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + [1684162878.418146][28333:28333] CHIP:DMG: ] (16 bytes) + [1684162878.418150][28333:28333] CHIP:DMG: 0x7 = 2220002, + [1684162878.418153][28333:28333] CHIP:DMG: }, + [1684162878.418155][28333:28333] CHIP:DMG: }, + [1684162878.418157][28333:28333] CHIP:DMG: }, + [1684162878.418161][28333:28333] CHIP:DMG: + [1684162878.418169][28333:28333] CHIP:DMG: ], + [1684162878.418173][28333:28333] CHIP:DMG: + [1684162878.418174][28333:28333] CHIP:DMG: InteractionModelRevision = 1 + [1684162878.418176][28333:28333] CHIP:DMG: }, + [1684162878.418190][28333:28333] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_003F e=0 p=a + [1684162878.418196][28333:28333] CHIP:DMG: AccessControl: allowed + [1684162878.418199][28333:28333] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003F Command=0x0000_0000 + disabled: true + + - label: + "DUT binds GroupId with GroupKeySetID in the GroupKeyMap attribute + list on GroupKeyManagement cluster" + PICS: GRPKEY.C.A0000 + verification: | + ./chip-tool groupkeymanagement write group-key-map '[{"groupId": 259, "groupKeySetID": 419, "fabricIndex": 1},{"groupId": 257, "groupKeySetID": 419, "fabricIndex": 1}]' 1 0 + + Verify that group-key-map attribute with GroupID_1 as 259, GroupID_2 as 257 and Group Set ID as 419 is present on TH(Reference app)log: + [1684166126.545563][29258:29258] CHIP:DMG: WriteRequestMessage = + [1684166126.545565][29258:29258] CHIP:DMG: { + [1684166126.545567][29258:29258] CHIP:DMG: suppressResponse = false, + [1684166126.545569][29258:29258] CHIP:DMG: timedRequest = false, + [1684166126.545571][29258:29258] CHIP:DMG: AttributeDataIBs = + [1684166126.545575][29258:29258] CHIP:DMG: [ + [1684166126.545577][29258:29258] CHIP:DMG: AttributeDataIB = + [1684166126.545579][29258:29258] CHIP:DMG: { + [1684166126.545581][29258:29258] CHIP:DMG: AttributePathIB = + [1684166126.545583][29258:29258] CHIP:DMG: { + [1684166126.545586][29258:29258] CHIP:DMG: Endpoint = 0x0, + [1684166126.545590][29258:29258] CHIP:DMG: Cluster = 0x3f, + [1684166126.545593][29258:29258] CHIP:DMG: Attribute = 0x0000_0000, + [1684166126.545595][29258:29258] CHIP:DMG: } + [1684166126.545597][29258:29258] CHIP:DMG: + [1684166126.545600][29258:29258] CHIP:DMG: Data = [ + [1684166126.545602][29258:29258] CHIP:DMG: + [1684166126.545606][29258:29258] CHIP:DMG: ], + [1684166126.545608][29258:29258] CHIP:DMG: }, + [1684166126.545612][29258:29258] CHIP:DMG: + [1684166126.545614][29258:29258] CHIP:DMG: AttributeDataIB = + [1684166126.545616][29258:29258] CHIP:DMG: { + [1684166126.545618][29258:29258] CHIP:DMG: AttributePathIB = + [1684166126.545620][29258:29258] CHIP:DMG: { + [1684166126.545622][29258:29258] CHIP:DMG: Endpoint = 0x0, + [1684166126.545624][29258:29258] CHIP:DMG: Cluster = 0x3f, + [1684166126.545626][29258:29258] CHIP:DMG: Attribute = 0x0000_0000, + [1684166126.545629][29258:29258] CHIP:DMG: ListIndex = Null, + [1684166126.545631][29258:29258] CHIP:DMG: } + [1684166126.545634][29258:29258] CHIP:DMG: + [1684166126.545636][29258:29258] CHIP:DMG: Data = + [1684166126.545638][29258:29258] CHIP:DMG: { + [1684166126.545641][29258:29258] CHIP:DMG: 0x1 = 259, + [1684166126.545643][29258:29258] CHIP:DMG: 0x2 = 419, + [1684166126.545646][29258:29258] CHIP:DMG: }, + [1684166126.545647][29258:29258] CHIP:DMG: }, + [1684166126.545652][29258:29258] CHIP:DMG: + [1684166126.545654][29258:29258] CHIP:DMG: AttributeDataIB = + [1684166126.545656][29258:29258] CHIP:DMG: { + [1684166126.545658][29258:29258] CHIP:DMG: AttributePathIB = + [1684166126.545661][29258:29258] CHIP:DMG: { + [1684166126.545663][29258:29258] CHIP:DMG: Endpoint = 0x0, + [1684166126.545665][29258:29258] CHIP:DMG: Cluster = 0x3f, + [1684166126.545668][29258:29258] CHIP:DMG: Attribute = 0x0000_0000, + [1684166126.545671][29258:29258] CHIP:DMG: ListIndex = Null, + [1684166126.545675][29258:29258] CHIP:DMG: } + [1684166126.545677][29258:29258] CHIP:DMG: + [1684166126.545680][29258:29258] CHIP:DMG: Data = + [1684166126.545683][29258:29258] CHIP:DMG: { + [1684166126.545686][29258:29258] CHIP:DMG: 0x1 = 257, + [1684166126.545689][29258:29258] CHIP:DMG: 0x2 = 419, + [1684166126.545692][29258:29258] CHIP:DMG: }, + [1684166126.545694][29258:29258] CHIP:DMG: }, + [1684166126.545698][29258:29258] CHIP:DMG: + [1684166126.545700][29258:29258] CHIP:DMG: ], + [1684166126.545706][29258:29258] CHIP:DMG: + [1684166126.545708][29258:29258] CHIP:DMG: moreChunkedMessages = false, + [1684166126.545711][29258:29258] CHIP:DMG: InteractionModelRevision = 1 + [1684166126.545713][29258:29258] CHIP:DMG: }, + [1684166126.545732][29258:29258] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_003F e=0 p=m + disabled: true + + - label: + "DUT sends AddGroup Command to DUT on EP0 with the the following + settings GroupID: GroupID_1 GroupName: GroupName_1" + PICS: G.C.C00.Tx + verification: | + ./chip-tool groups add-group 259 'grp1' 1 1 + + Verify that AddGroup command with GroupID as 259 and group name as "grp1" is present on TH(Reference app)log: + [1684166282.551829][29258:29258] CHIP:DMG: InvokeRequestMessage = + [1684166282.551837][29258:29258] CHIP:DMG: { + [1684166282.551844][29258:29258] CHIP:DMG: suppressResponse = false, + [1684166282.551853][29258:29258] CHIP:DMG: timedRequest = false, + [1684166282.551859][29258:29258] CHIP:DMG: InvokeRequests = + [1684166282.551872][29258:29258] CHIP:DMG: [ + [1684166282.551879][29258:29258] CHIP:DMG: CommandDataIB = + [1684166282.551887][29258:29258] CHIP:DMG: { + [1684166282.551894][29258:29258] CHIP:DMG: CommandPathIB = + [1684166282.551903][29258:29258] CHIP:DMG: { + [1684166282.551912][29258:29258] CHIP:DMG: EndpointId = 0x1, + [1684166282.551920][29258:29258] CHIP:DMG: ClusterId = 0x4, + [1684166282.551928][29258:29258] CHIP:DMG: CommandId = 0x0, + [1684166282.551935][29258:29258] CHIP:DMG: }, + [1684166282.551944][29258:29258] CHIP:DMG: + [1684166282.551951][29258:29258] CHIP:DMG: CommandFields = + [1684166282.551960][29258:29258] CHIP:DMG: { + [1684166282.551970][29258:29258] CHIP:DMG: 0x0 = 259, + [1684166282.551980][29258:29258] CHIP:DMG: 0x1 = "grp1" (4 chars), + [1684166282.551989][29258:29258] CHIP:DMG: }, + [1684166282.551996][29258:29258] CHIP:DMG: }, + [1684166282.552007][29258:29258] CHIP:DMG: + [1684166282.552013][29258:29258] CHIP:DMG: ], + [1684166282.552024][29258:29258] CHIP:DMG: + [1684166282.552032][29258:29258] CHIP:DMG: InteractionModelRevision = 1 + [1684166282.552038][29258:29258] CHIP:DMG: }, + [1684166282.552074][29258:29258] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0004 e=1 p=m + [1684166282.552089][29258:29258] CHIP:DMG: AccessControl: allowed + [1684166282.552100][29258:29258] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0004 Command=0x0000_0000 disabled: true - label: - "DUT operator initiates transmission of multicast message to TH (by - interacting with DUT)" + "DUT generates fabric-unique GroupID, GroupName. Save the GroupID as + GroupID_2, GroupName as GroupName_2" verification: | - ./chip-tool groupsettings add-group grp1 0x0001 - - ./chip-tool groupsettings add-keysets 0x0042 0 0x000000000021dfe0 hex:d0d1d2d3d4d5d6d7d8d9dadbdcdddedf - - ./chip-tool groupsettings bind-keyset 0x0001 0x0042 - - ./chip-tool groupsettings show-groups - - ./chip-tool identify identify 0x0078 0xffffffffffff0001 1 - - Verify Destination Node ID matches the GroupID on TH(Reference app)log : - - [1657785422.721911][2083:2083] CHIP:EM: Received Groupcast Message with GroupId of 1 - [1657785422.721988][2083:2083] CHIP:EM: Handling via exchange: 53995r, Delegate: 0xaaaac81b1430 - [1657785422.722098][2083:2083] CHIP:DMG: InvokeRequestMessage = - [1657785422.722161][2083:2083] CHIP:DMG: { - [1657785422.722220][2083:2083] CHIP:DMG: suppressResponse = false, - [1657785422.722317][2083:2083] CHIP:DMG: timedRequest = false, - [1657785422.722379][2083:2083] CHIP:DMG: InvokeRequests = - [1657785422.722475][2083:2083] CHIP:DMG: [ - [1657785422.722536][2083:2083] CHIP:DMG: CommandDataIB = - [1657785422.722636][2083:2083] CHIP:DMG: { - [1657785422.722726][2083:2083] CHIP:DMG: CommandPathIB = - [1657785422.722834][2083:2083] CHIP:DMG: { - [1657785422.722913][2083:2083] CHIP:DMG: ClusterId = 0x3, - [1657785422.723011][2083:2083] CHIP:DMG: CommandId = 0x0, - [1657785422.723095][2083:2083] CHIP:DMG: }, - [1657785422.723173][2083:2083] CHIP:DMG: - [1657785422.723242][2083:2083] CHIP:DMG: CommandFields = - [1657785422.723318][2083:2083] CHIP:DMG: { - [1657785422.723395][2083:2083] CHIP:DMG: 0x0 = 120, - [1657785422.723483][2083:2083] CHIP:DMG: }, - [1657785422.723555][2083:2083] CHIP:DMG: }, - [1657785422.723627][2083:2083] CHIP:DMG: - [1657785422.723685][2083:2083] CHIP:DMG: ], - [1657785422.723756][2083:2083] CHIP:DMG: - [1657785422.723814][2083:2083] CHIP:DMG: InteractionModelRevision = 1 - [1657785422.723872][2083:2083] CHIP:DMG: }, - [1657785422.723988][2083:2083] CHIP:DMG: Received group command for Group=1 Cluster=0x0000_0003 Command=0x0000_0000 - [1657785422.724688][2083:2083] CHIP:DMG: Processing group command for Endpoint=1 Cluster=0x0000_0003 Command=0x0000_0000 - [1657785422.724770][2083:2083] CHIP:DMG: AccessControl: checking f=1 a=g s=0xFFFFFFFFFFFF0001 t= c=0x0000_0003 e=1 p=m - [1657785422.724846][2083:2083] CHIP:DMG: AccessControl: allowed - [1657785422.724929][2083:2083] CHIP:DMG: Endpoint 1, Cluster 0x0000_0003 update version to 435c9140 - - - Verify the Multicast address follows the format "FF35:0040:FD00: and UDP port is 5540 on DUT(chip-tool)log - - <<< [E:15304i M:15000] (G) Msg TX to 1:FFFFFFFFFFFF0001 [D5AE] --- Type 0001:08 (IM:InvokeCommandRequest) - [1670395515.064662][14427:14429] CHIP:IN: (G) Sending msg 15000 to Multicast IPV6 address 'UDP:[ff35:40:fd00::100:1]:5540' - [1670395515.067533][14427:14429] CHIP:IN: Interface eth0 has a link local address + refer to log in step 3 + GroupID_2 = 257 + GroupName_2 = "grp2" + disabled: true + + - label: + "DUT sends a AddGroup Command to the Groups cluster with the GroupID + field set to GroupID_2 and the GroupName set to an GroupName_2. The + command is sent as a group command using GroupID_1" + verification: | + ./chip-tool groups add-group 257 '' 0xffffffffffff0103 1 + Verify that AddGroup command with GroupID as 257 and group name as "grp2" is generated as groupcast message from GroupID 259 is present on TH(Reference app)log: + 1684167429.420171][29723:29723] CHIP:EM: Received Groupcast Message with GroupId 0x0103 (259) + [1684167429.420179][29723:29723] CHIP:EM: Handling via exchange: 1950r, Delegate: 0x56422560dca8 + [1684166549.863617][29708:29710] CHIP:DMG: InvokeResponseMessage = + [1684166549.863619][29708:29710] CHIP:DMG: { + [1684166549.863621][29708:29710] CHIP:DMG: suppressResponse = false, + [1684166549.863623][29708:29710] CHIP:DMG: InvokeResponseIBs = + [1684166549.863627][29708:29710] CHIP:DMG: [ + [1684166549.863629][29708:29710] CHIP:DMG: InvokeResponseIB = + [1684166549.863632][29708:29710] CHIP:DMG: { + [1684166549.863634][29708:29710] CHIP:DMG: CommandDataIB = + [1684166549.863637][29708:29710] CHIP:DMG: { + [1684166549.863639][29708:29710] CHIP:DMG: CommandPathIB = + [1684166549.863641][29708:29710] CHIP:DMG: { + [1684166549.863644][29708:29710] CHIP:DMG: EndpointId = 0x1, + [1684166549.863646][29708:29710] CHIP:DMG: ClusterId = 0x4, + [1684166549.863649][29708:29710] CHIP:DMG: CommandId = 0x1, + [1684166549.863651][29708:29710] CHIP:DMG: }, + [1684166549.863653][29708:29710] CHIP:DMG: + [1684166549.863656][29708:29710] CHIP:DMG: CommandFields = + [1684166549.863658][29708:29710] CHIP:DMG: { + [1684166549.863661][29708:29710] CHIP:DMG: 0x0 = 0, + [1684166549.863664][29708:29710] CHIP:DMG: 0x1 = 257, + [1684166549.863667][29708:29710] CHIP:DMG: 0x2 = "grp2" (4 chars), + [1684166549.863669][29708:29710] CHIP:DMG: }, + [1684166549.863671][29708:29710] CHIP:DMG: }, + [1684166549.863674][29708:29710] CHIP:DMG: + [1684166549.863676][29708:29710] CHIP:DMG: }, + [1684166549.863679][29708:29710] CHIP:DMG: + [1684166549.863681][29708:29710] CHIP:DMG: ], + [1684166549.863685][29708:29710] CHIP:DMG: + [1684166549.863687][29708:29710] CHIP:DMG: InteractionModelRevision = 1 + [1684166549.863688][29708:29710] CHIP:DMG: }, + + [1684167429.420308][29723:29723] CHIP:DMG: Received group command for Group=259 Cluster=0x0000_0004 Command=0x0000_0000 + [1684167429.420390][29723:29723] CHIP:DMG: Processing group command for Endpoint=1 Cluster=0x0000_0004 Command=0x0000_0000 + [1684167429.420398][29723:29723] CHIP:DMG: AccessControl: checking f=1 a=g s=0xFFFFFFFFFFFF0103 t= c=0x0000_0004 e=1 p=m + [1684167429.420406][29723:29723] CHIP:DMG: AccessControl: allowed + + [1684167429.421010][29723:29723] CHIP:IN: Joining Multicast Group with address UDP:[ff35:40:fd00::100:101]:5540 + [1684167429.421129][29723:29723] CHIP:IN: Joined multicast group on interface wlp0s20f3 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_SC_6_1.yaml b/src/app/tests/suites/certification/Test_TC_SC_6_1.yaml index bd8ba4c7e72f92..2e36ed9d956c2e 100644 --- a/src/app/tests/suites/certification/Test_TC_SC_6_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_SC_6_1.yaml @@ -14,7 +14,7 @@ # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default name: - 19.2.1. [TC-SC-6.1] Adding member to a group - DUT as Admin and TH as Group + 18.2.1. [TC-SC-6.1] Adding member to a group - DUT as Admin and TH as Group Member [DUT-Client] PICS: @@ -118,11 +118,7 @@ tests: and GroupKeySetID. Admin sets GroupKeySecurityPolicy = TrustFirst (0) EpochStartTime0 = 0" verification: | - ./chip-tool groupkeymanagement key-set-write '{"groupKeySetID": 42, - "groupKeySecurityPolicy": 0, "epochKey0": - "d0d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime0": 2220000,"epochKey1": - "d1d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime1": 2220001,"epochKey2": - "d2d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime2": 2220002 }' 1 0 + disabled: true - label: @@ -130,6 +126,12 @@ tests: EP0" PICS: GRPKEY.C.C00.Tx verification: | + ./chip-tool groupkeymanagement key-set-write '{"groupKeySetID": 42, + "groupKeySecurityPolicy": 0, "epochKey0": + "d0d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime0": 2220000,"epochKey1": + "d1d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime1": 2220001,"epochKey2": + "d2d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime2": 2220002 }' 1 0 + Verify TH recieves KeySetWrite command on TH(Reference app)log: [1651471040.120912][4012:4012] CHIP:EM: Received message of type 0x8 with protocolId (0, 1) and MessageCounter:2398599 on exchange 35559r diff --git a/src/app/tests/suites/manualTests.json b/src/app/tests/suites/manualTests.json index d988b42b75c216..b7e47c41445dac 100644 --- a/src/app/tests/suites/manualTests.json +++ b/src/app/tests/suites/manualTests.json @@ -293,7 +293,7 @@ "Test_TC_BRBINFO_2_2", "Test_TC_BRBINFO_2_3" ], - "AccessControlEnforcement": ["Test_TC_ACE_1_2"], + "AccessControlEnforcement": ["Test_TC_ACE_1_2", "Test_TC_ACE_1_6"], "collection": [ "DeviceDiscovery", "Groups", diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h index 50ff8f1b0e4729..e5cd38f0e6018a 100644 --- a/zzz_generated/chip-tool/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h @@ -543,6 +543,7 @@ class ManualTestList : public Command printf("Test_TC_BRBINFO_2_2\n"); printf("Test_TC_BRBINFO_2_3\n"); printf("Test_TC_ACE_1_2\n"); + printf("Test_TC_ACE_1_6\n"); return CHIP_NO_ERROR; } @@ -8905,7 +8906,7 @@ class Test_TC_ACE_1_1Suite : public TestCommand class Test_TC_ACE_1_5Suite : public TestCommand { public: - Test_TC_ACE_1_5Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACE_1_5", 18, credsIssuerConfig) + Test_TC_ACE_1_5Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACE_1_5", 23, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -8991,6 +8992,10 @@ class Test_TC_ACE_1_5Suite : public TestCommand } break; case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::CommissionerCommands::Commands::GetCommissionerNodeIdResponse::DecodableType value; @@ -8999,10 +9004,10 @@ class Test_TC_ACE_1_5Suite : public TestCommand } shouldContinue = true; break; - case 9: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 10: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::CommissionerCommands::Commands::GetCommissionerNodeIdResponse::DecodableType value; @@ -9011,10 +9016,14 @@ class Test_TC_ACE_1_5Suite : public TestCommand } shouldContinue = true; break; - case 11: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 12: + case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList @@ -9022,29 +9031,41 @@ class Test_TC_ACE_1_5Suite : public TestCommand VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); } break; - case 13: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_ACCESS)); break; - case 14: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_ACCESS)); break; - case 15: + case 17: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::VendorId value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); } break; - case 16: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; break; - case 17: + case 20: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::OperationalCredentials::Commands::NOCResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); } break; + case 22: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -9073,7 +9094,7 @@ class Test_TC_ACE_1_5Suite : public TestCommand OperationalCredentials::Attributes::CurrentFabricIndex::Id, true, chip::NullOptional); } case 2: { - LogStep(2, "Step 3 & 4: TH1 puts DUT into commissioning mode, TH2 commissions DUT using admin node ID N2"); + LogStep(2, "Step 2 & 3: TH1 puts DUT into commissioning mode, TH2 commissions DUT using admin node ID N2"); VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; @@ -9133,17 +9154,28 @@ class Test_TC_ACE_1_5Suite : public TestCommand } case 7: { LogStep(7, "TH2 reads the fabric index"); + VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityBeta, GetEndpoint(0), OperationalCredentials::Id, OperationalCredentials::Attributes::CurrentFabricIndex::Id, true, chip::NullOptional); } case 8: { - LogStep(8, "Read the commissioner node ID from the alpha fabric"); + LogStep(8, "TH2 reads the fabric index"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 9: { + LogStep(9, "Read the commissioner node ID from the alpha fabric"); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::GetCommissionerNodeId::Type value; return GetCommissionerNodeId(kIdentityAlpha, value); } - case 9: { - LogStep(9, "TH1 writes ACL giving view privilege for descriptor cluster"); + case 10: { + LogStep(10, "TH1 writes ACL giving view privilege for descriptor cluster"); ListFreer listFreer; chip::app::DataModel::List value; @@ -9213,14 +9245,16 @@ class Test_TC_ACE_1_5Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, chip::NullOptional, chip::NullOptional); } - case 10: { - LogStep(10, "Read the commissioner node ID from the beta fabric"); + case 11: { + LogStep(11, "Read the commissioner node ID from the beta fabric"); + VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::GetCommissionerNodeId::Type value; return GetCommissionerNodeId(kIdentityBeta, value); } - case 11: { - LogStep(11, "TH2 writes ACL giving view privilge for basic cluster"); + case 12: { + LogStep(12, "TH2 writes ACL giving view privilge for basic cluster"); + VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::DataModel::List value; @@ -9290,28 +9324,60 @@ class Test_TC_ACE_1_5Suite : public TestCommand return WriteAttribute(kIdentityBeta, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, chip::NullOptional, chip::NullOptional); } - case 12: { - LogStep(12, "TH1 reads descriptor cluster - expect SUCCESS"); + case 13: { + LogStep(13, "TH2 writes ACL giving view privilge for basic cluster"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 14: { + LogStep(14, "TH1 reads descriptor cluster - expect SUCCESS"); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Descriptor::Id, Descriptor::Attributes::DeviceTypeList::Id, true, chip::NullOptional); } - case 13: { - LogStep(13, "TH1 reads basic cluster - expect UNSUPPORTED_ACCESS"); + case 15: { + LogStep(15, "TH1 reads basic cluster - expect UNSUPPORTED_ACCESS"); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::VendorID::Id, true, chip::NullOptional); } - case 14: { - LogStep(14, "TH2 reads descriptor cluster - expect UNSUPPORTED_ACCESS"); + case 16: { + LogStep(16, "TH2 reads descriptor cluster - expect UNSUPPORTED_ACCESS"); + VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityBeta, GetEndpoint(0), Descriptor::Id, Descriptor::Attributes::DeviceTypeList::Id, true, chip::NullOptional); } - case 15: { - LogStep(15, "TH2 reads basic cluster - expect SUCCESS"); + case 17: { + LogStep(17, "TH2 reads descriptor cluster - expect UNSUPPORTED_ACCESS"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 18: { + LogStep(18, "TH2 reads basic cluster - expect SUCCESS"); + VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityBeta, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::VendorID::Id, true, chip::NullOptional); } - case 16: { - LogStep(16, "TH1 resets ACL to default"); + case 19: { + LogStep(19, "TH2 writes Extension attribute value as empty list"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 20: { + LogStep(20, "TH1 resets ACL to default"); ListFreer listFreer; chip::app::DataModel::List value; @@ -9341,8 +9407,9 @@ class Test_TC_ACE_1_5Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, chip::NullOptional, chip::NullOptional); } - case 17: { - LogStep(17, "TH1 sends RemoveFabric command for TH2"); + case 21: { + LogStep(21, "TH1 sends RemoveFabric command for TH2"); + VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::OperationalCredentials::Commands::RemoveFabric::Type value; value.fabricIndex = th2FabricIndex; @@ -9351,6 +9418,16 @@ class Test_TC_ACE_1_5Suite : public TestCommand ); } + case 22: { + LogStep(22, "TH1 sends RemoveFabric command for TH2"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -118444,6 +118521,61 @@ class Test_TC_ACE_1_2Suite : public TestCommand } }; +class Test_TC_ACE_1_6Suite : public TestCommand +{ +public: + Test_TC_ACE_1_6Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACE_1_6", 0, credsIssuerConfig) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_ACE_1_6Suite() {} + + chip::System::Clock::Timeout GetWaitDuration() const override + { + return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); + } + +private: + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } + + // + // Tests methods + // + + void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override + { + bool shouldContinue = false; + + switch (mTestIndex - 1) + { + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + } + + if (shouldContinue) + { + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + } + + CHIP_ERROR DoTestStep(uint16_t testIndex) override + { + using namespace chip::app::Clusters; + switch (testIndex) + {} + return CHIP_NO_ERROR; + } +}; + #endif // CONFIG_ENABLE_YAML_TESTS void registerCommandsTests(Commands & commands, CredentialIssuerCommands * credsIssuerConfig) @@ -118951,6 +119083,7 @@ void registerCommandsTests(Commands & commands, CredentialIssuerCommands * creds make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), + make_unique(credsIssuerConfig), #endif // CONFIG_ENABLE_YAML_TESTS }; diff --git a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h index 0c5f225c2dd691..bd85d91e2db8fb 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h @@ -5696,13 +5696,13 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { break; case 2: ChipLogProgress(chipTool, - " ***** Test Step 2 : Step 3 & 4: TH1 puts DUT into commissioning mode, TH2 commissions DUT using admin node ID " + " ***** Test Step 2 : Step 2 & 3: TH1 puts DUT into commissioning mode, TH2 commissions DUT using admin node ID " "N2\n"); if (ShouldSkip("PICS_SKIP_SAMPLE_APP")) { NextTest(); return; } - err = TestStep34Th1PutsDutIntoCommissioningModeTh2CommissionsDutUsingAdminNodeIdN2_2(); + err = TestStep23Th1PutsDutIntoCommissioningModeTh2CommissionsDutUsingAdminNodeIdN2_2(); break; case 3: ChipLogProgress(chipTool, " ***** Test Step 3 : Open Commissioning Window from alpha\n"); @@ -5738,47 +5738,111 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { break; case 7: ChipLogProgress(chipTool, " ***** Test Step 7 : TH2 reads the fabric index\n"); + if (ShouldSkip("PICS_SDK_CI_ONLY")) { + NextTest(); + return; + } err = TestTh2ReadsTheFabricIndex_7(); break; case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : Read the commissioner node ID from the alpha fabric\n"); - err = TestReadTheCommissionerNodeIdFromTheAlphaFabric_8(); + ChipLogProgress(chipTool, " ***** Test Step 8 : TH2 reads the fabric index\n"); + if (ShouldSkip("PICS_SKIP_SAMPLE_APP")) { + NextTest(); + return; + } + err = TestTh2ReadsTheFabricIndex_8(); break; case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : TH1 writes ACL giving view privilege for descriptor cluster\n"); - err = TestTh1WritesAclGivingViewPrivilegeForDescriptorCluster_9(); + ChipLogProgress(chipTool, " ***** Test Step 9 : Read the commissioner node ID from the alpha fabric\n"); + err = TestReadTheCommissionerNodeIdFromTheAlphaFabric_9(); break; case 10: - ChipLogProgress(chipTool, " ***** Test Step 10 : Read the commissioner node ID from the beta fabric\n"); - err = TestReadTheCommissionerNodeIdFromTheBetaFabric_10(); + ChipLogProgress(chipTool, " ***** Test Step 10 : TH1 writes ACL giving view privilege for descriptor cluster\n"); + err = TestTh1WritesAclGivingViewPrivilegeForDescriptorCluster_10(); break; case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : TH2 writes ACL giving view privilge for basic cluster\n"); - err = TestTh2WritesAclGivingViewPrivilgeForBasicCluster_11(); + ChipLogProgress(chipTool, " ***** Test Step 11 : Read the commissioner node ID from the beta fabric\n"); + if (ShouldSkip("PICS_SDK_CI_ONLY")) { + NextTest(); + return; + } + err = TestReadTheCommissionerNodeIdFromTheBetaFabric_11(); break; case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : TH1 reads descriptor cluster - expect SUCCESS\n"); - err = TestTh1ReadsDescriptorClusterExpectSuccess_12(); + ChipLogProgress(chipTool, " ***** Test Step 12 : TH2 writes ACL giving view privilge for basic cluster\n"); + if (ShouldSkip("PICS_SDK_CI_ONLY")) { + NextTest(); + return; + } + err = TestTh2WritesAclGivingViewPrivilgeForBasicCluster_12(); break; case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : TH1 reads basic cluster - expect UNSUPPORTED_ACCESS\n"); - err = TestTh1ReadsBasicClusterExpectUnsupportedAccess_13(); + ChipLogProgress(chipTool, " ***** Test Step 13 : TH2 writes ACL giving view privilge for basic cluster\n"); + if (ShouldSkip("PICS_SKIP_SAMPLE_APP")) { + NextTest(); + return; + } + err = TestTh2WritesAclGivingViewPrivilgeForBasicCluster_13(); break; case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : TH2 reads descriptor cluster - expect UNSUPPORTED_ACCESS\n"); - err = TestTh2ReadsDescriptorClusterExpectUnsupportedAccess_14(); + ChipLogProgress(chipTool, " ***** Test Step 14 : TH1 reads descriptor cluster - expect SUCCESS\n"); + err = TestTh1ReadsDescriptorClusterExpectSuccess_14(); break; case 15: - ChipLogProgress(chipTool, " ***** Test Step 15 : TH2 reads basic cluster - expect SUCCESS\n"); - err = TestTh2ReadsBasicClusterExpectSuccess_15(); + ChipLogProgress(chipTool, " ***** Test Step 15 : TH1 reads basic cluster - expect UNSUPPORTED_ACCESS\n"); + err = TestTh1ReadsBasicClusterExpectUnsupportedAccess_15(); break; case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : TH1 resets ACL to default\n"); - err = TestTh1ResetsAclToDefault_16(); + ChipLogProgress(chipTool, " ***** Test Step 16 : TH2 reads descriptor cluster - expect UNSUPPORTED_ACCESS\n"); + if (ShouldSkip("PICS_SDK_CI_ONLY")) { + NextTest(); + return; + } + err = TestTh2ReadsDescriptorClusterExpectUnsupportedAccess_16(); break; case 17: - ChipLogProgress(chipTool, " ***** Test Step 17 : TH1 sends RemoveFabric command for TH2\n"); - err = TestTh1SendsRemoveFabricCommandForTh2_17(); + ChipLogProgress(chipTool, " ***** Test Step 17 : TH2 reads descriptor cluster - expect UNSUPPORTED_ACCESS\n"); + if (ShouldSkip("PICS_SKIP_SAMPLE_APP")) { + NextTest(); + return; + } + err = TestTh2ReadsDescriptorClusterExpectUnsupportedAccess_17(); + break; + case 18: + ChipLogProgress(chipTool, " ***** Test Step 18 : TH2 reads basic cluster - expect SUCCESS\n"); + if (ShouldSkip("PICS_SDK_CI_ONLY")) { + NextTest(); + return; + } + err = TestTh2ReadsBasicClusterExpectSuccess_18(); + break; + case 19: + ChipLogProgress(chipTool, " ***** Test Step 19 : TH2 writes Extension attribute value as empty list\n"); + if (ShouldSkip("PICS_SKIP_SAMPLE_APP")) { + NextTest(); + return; + } + err = TestTh2WritesExtensionAttributeValueAsEmptyList_19(); + break; + case 20: + ChipLogProgress(chipTool, " ***** Test Step 20 : TH1 resets ACL to default\n"); + err = TestTh1ResetsAclToDefault_20(); + break; + case 21: + ChipLogProgress(chipTool, " ***** Test Step 21 : TH1 sends RemoveFabric command for TH2\n"); + if (ShouldSkip("PICS_SDK_CI_ONLY")) { + NextTest(); + return; + } + err = TestTh1SendsRemoveFabricCommandForTh2_21(); + break; + case 22: + ChipLogProgress(chipTool, " ***** Test Step 22 : TH1 sends RemoveFabric command for TH2\n"); + if (ShouldSkip("PICS_SKIP_SAMPLE_APP")) { + NextTest(); + return; + } + err = TestTh1SendsRemoveFabricCommandForTh2_22(); break; } @@ -5831,20 +5895,35 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_ACCESS)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 14: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_ACCESS)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 15: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_ACCESS)); break; case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_ACCESS)); break; case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 18: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 19: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 20: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 21: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 22: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -5858,7 +5937,7 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 18; + const uint16_t mTestCount = 23; chip::Optional mNodeId; chip::Optional mCluster; @@ -5902,7 +5981,7 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep34Th1PutsDutIntoCommissioningModeTh2CommissionsDutUsingAdminNodeIdN2_2() + CHIP_ERROR TestStep23Th1PutsDutIntoCommissioningModeTh2CommissionsDutUsingAdminNodeIdN2_2() { chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; @@ -5996,9 +6075,19 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { return CHIP_NO_ERROR; } + + CHIP_ERROR TestTh2ReadsTheFabricIndex_8() + { + + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); + } NSNumber * _Nonnull commissionerNodeIdAlpha; - CHIP_ERROR TestReadTheCommissionerNodeIdFromTheAlphaFabric_8() + CHIP_ERROR TestReadTheCommissionerNodeIdFromTheAlphaFabric_9() { chip::app::Clusters::CommissionerCommands::Commands::GetCommissionerNodeId::Type value; @@ -6010,7 +6099,7 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { }); } - CHIP_ERROR TestTh1WritesAclGivingViewPrivilegeForDescriptorCluster_9() + CHIP_ERROR TestTh1WritesAclGivingViewPrivilegeForDescriptorCluster_10() { MTRBaseDevice * device = GetDevice("alpha"); @@ -6069,7 +6158,7 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { } NSNumber * _Nonnull commissionerNodeIdBeta; - CHIP_ERROR TestReadTheCommissionerNodeIdFromTheBetaFabric_10() + CHIP_ERROR TestReadTheCommissionerNodeIdFromTheBetaFabric_11() { chip::app::Clusters::CommissionerCommands::Commands::GetCommissionerNodeId::Type value; @@ -6081,7 +6170,7 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { }); } - CHIP_ERROR TestTh2WritesAclGivingViewPrivilgeForBasicCluster_11() + CHIP_ERROR TestTh2WritesAclGivingViewPrivilgeForBasicCluster_12() { MTRBaseDevice * device = GetDevice("beta"); @@ -6139,7 +6228,17 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestTh1ReadsDescriptorClusterExpectSuccess_12() + CHIP_ERROR TestTh2WritesAclGivingViewPrivilgeForBasicCluster_13() + { + + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); + } + + CHIP_ERROR TestTh1ReadsDescriptorClusterExpectSuccess_14() { MTRBaseDevice * device = GetDevice("alpha"); @@ -6157,7 +6256,7 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestTh1ReadsBasicClusterExpectUnsupportedAccess_13() + CHIP_ERROR TestTh1ReadsBasicClusterExpectUnsupportedAccess_15() { MTRBaseDevice * device = GetDevice("alpha"); @@ -6176,7 +6275,7 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestTh2ReadsDescriptorClusterExpectUnsupportedAccess_14() + CHIP_ERROR TestTh2ReadsDescriptorClusterExpectUnsupportedAccess_16() { MTRBaseDevice * device = GetDevice("beta"); @@ -6195,7 +6294,17 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestTh2ReadsBasicClusterExpectSuccess_15() + CHIP_ERROR TestTh2ReadsDescriptorClusterExpectUnsupportedAccess_17() + { + + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); + } + + CHIP_ERROR TestTh2ReadsBasicClusterExpectSuccess_18() { MTRBaseDevice * device = GetDevice("beta"); @@ -6213,7 +6322,17 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestTh1ResetsAclToDefault_16() + CHIP_ERROR TestTh2WritesExtensionAttributeValueAsEmptyList_19() + { + + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); + } + + CHIP_ERROR TestTh1ResetsAclToDefault_20() { MTRBaseDevice * device = GetDevice("alpha"); @@ -6248,7 +6367,7 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestTh1SendsRemoveFabricCommandForTh2_17() + CHIP_ERROR TestTh1SendsRemoveFabricCommandForTh2_21() { MTRBaseDevice * device = GetDevice("alpha"); @@ -6271,6 +6390,16 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { return CHIP_NO_ERROR; } + + CHIP_ERROR TestTh1SendsRemoveFabricCommandForTh2_22() + { + + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); + } }; class Test_TC_BOOL_1_1 : public TestCommandBridge {