# 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: 125.3.2. [TC-G-3.2] Commands [DUT-Client]

PICS:
    - G.C

config:
    nodeId: 0x12344321
    cluster: "Basic"
    endpoint: 0

tests:
    - label: "Note"
      verification: |
          Chip-tool command used below are an example to verify the  DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command.
      disabled: true

    - label: "DUT sends GetGroupMembership command to TH"
      PICS: G.C.C02.Tx
      verification: |
          Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client)

          ./chip-tool groups get-group-membership "[33]" 1 1

          Verify the "GetGroupMembership command response" on the TH(Allcluster-app)  Log:


          [1659609064.738513][3355:3355] CHIP:DMG: },
          [1659609064.738580][3355:3355] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0004 e=1 p=o
          [1659609064.738619][3355:3355] CHIP:DMG: AccessControl: allowed
          [1659609064.738648][3355:3355] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0004 Command=0x0000_0002
          [1659609064.738825][3355:3355] CHIP:DMG: ICR moving to [ Preparing]
      disabled: true

    - label: "DUT sends RemoveGroup command to TH"
      PICS: G.C.C03.Tx
      verification: |
          ./chip-tool groups remove-group 0x0021 1 1

          Verify the "RemoveGroup command response" on the TH(Allcluster-app)  Log:
          [1659609128.634829][3355:3355] CHIP:DMG:         InteractionModelRevision = 1
          [1659609128.634852][3355:3355] CHIP:DMG: },
          [1659609128.634916][3355:3355] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0004 e=1 p=m
          [1659609128.634952][3355:3355] CHIP:DMG: AccessControl: allowed
          [1659609128.634981][3355:3355] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0004 Command=0x0000_0003
          [1659609128.635123][3355:3355] CHIP:DMG: ICR moving to [ Preparing]
      disabled: true

    - label: "DUT sends RemoveAllGroups command to TH"
      PICS: G.C.C04.Tx
      verification: |
          ./chip-tool groups  remove-all-groups 1 1

          Verify the "RemoveAllGroups command response"  on the TH(Allcluster-app)  Log:

          [1659609158.078774][3355:3355] CHIP:DMG:         InteractionModelRevision = 1
          [1659609158.078797][3355:3355] CHIP:DMG: },
          [1659609158.078876][3355:3355] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0004 e=1 p=m
          [1659609158.078911][3355:3355] CHIP:DMG: AccessControl: allowed
          [1659609158.078949][3355:3355] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0004 Command=0x0000_0004
          [1659609158.079188][3355:3355] CHIP:DMG: ICR moving to [ Preparing]
      disabled: true

    - label: "DUT sends AddGroupIfIdentifying command to TH"
      PICS: G.C.C05.Tx
      verification: |
          ./chip-tool groups  add-group-if-identifying 0x0052 gp54 1 0

          Verify the "AddGroupIfIdentifying command response" on the TH(Allcluster-app)  Log:

          [1659609228.441181][3355:3355] CHIP:DMG:
          [1659609228.441208][3355:3355] CHIP:DMG:         InteractionModelRevision = 1
          [1659609228.441234][3355:3355] CHIP:DMG: },
          [1659609228.441306][3355:3355] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0004 e=0 p=m
          [1659609228.441346][3355:3355] CHIP:DMG: AccessControl: allowed
          [1659609228.441378][3355:3355] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_0004 Command=0x0000_0005
          [1659609228.441436][3355:3355] CHIP:DMG: ICR moving to [ Preparing]
      disabled: true
