# 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:
    120.2.2. [TC-BIND-2.2] Binding Cluster Attributes-DUT handles its Groups
    settings [DUT-Controller]

PICS:
    - BIND.C

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

tests:
    - label: "Factory Reset DUT"
      verification: |
          Vendor specific action, for chip-tool run
          rm -rf /tmp/chip*
      disabled: true

    - label: "Commission DUT to TH1s fabric"
      verification: |
          Run this cmmd in Thread device terminal:

          ./chip-tool pairing ble-thread 73 hex:0e080000000000010000000300000f35060004001fffe0020810101191022022920708fd6587bfe9821353051000112237945966880899aabbccddeeff030f7070656e5468726561644465696f6c010212340410f23d85dd55d9748cc6a1fd5fccbb1da20c0402a0fff8 20202021 3840
      disabled: true

    - label: "TH1 enables DUT as Controller"
      verification: |
          verification step to be updated.
      disabled: true

    - label: "Commission TH2 to TH1s fabric (Node ID = 2)"
      verification: |
          ./chip-tool pairing onnetwork 1 20202021

          On TH(Chip-tool), Verify the success response

          [1659104612.592373][62366:62371] CHIP:DMG:         SuppressResponse = true,
          [1659104612.592399][62366:62371] CHIP:DMG:         InteractionModelRevision = 1
          [1659104612.592432][62366:62371] CHIP:DMG: }
          [1659104612.593187][62366:62371] CHIP:CTL: Successfully finished commissioning step "ReadCommissioningInfo"
      disabled: true

    - label:
          "DUT generates fabric-unique GroupID, GroupName, random key, EpochKey0
          and GroupKeySetID."
      verification: |
          As Admin generates it is not necessary to verify
      disabled: true

    - label:
          "DUT sends KeySetWrite command to GroupKeyManagement cluster to TH2 on
          Endpoint 0."
      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 }" 2 0

          On DUT, Verify the success response for KeySetWrite


          [1657717291.809861][3361:3366] CHIP:DMG: ICR moving to [ResponseRe]
          [1657717291.809913][3361:3366] CHIP:DMG: InvokeResponseMessage =
          [1657717291.809939][3361:3366] CHIP:DMG: {
          [1657717291.809965][3361:3366] CHIP:DMG:         suppressResponse = false,
          [1657717291.809992][3361:3366] CHIP:DMG:         InvokeResponseIBs =
          [1657717291.810025][3361:3366] CHIP:DMG:         [
          [1657717291.810051][3361:3366] CHIP:DMG:                 InvokeResponseIB =
          [1657717291.810088][3361:3366] CHIP:DMG:                 {
          [1657717291.810115][3361:3366] CHIP:DMG:                         CommandStatusIB =
          [1657717291.810149][3361:3366] CHIP:DMG:                         {
          [1657717291.810179][3361:3366] CHIP:DMG:                                 CommandPathIB =
          [1657717291.810215][3361:3366] CHIP:DMG:                                 {
          [1657717291.810252][3361:3366] CHIP:DMG:                                         EndpointId = 0x0,
          [1657717291.810290][3361:3366] CHIP:DMG:                                         ClusterId = 0x3f,
          [1657717291.810326][3361:3366] CHIP:DMG:                                         CommandId = 0x0,
          [1657717291.810364][3361:3366] CHIP:DMG:                                 },
          [1657717291.810403][3361:3366] CHIP:DMG:
          [1657717291.810435][3361:3366] CHIP:DMG:                                 StatusIB =
          [1657717291.810470][3361:3366] CHIP:DMG:                                 {
          [1657717291.810507][3361:3366] CHIP:DMG:                                         status = 0x00 (SUCCESS),
          [1657717291.810540][3361:3366] CHIP:DMG:                                 },
          [1657717291.810575][3361:3366] CHIP:DMG:
          [1657717291.810606][3361:3366] CHIP:DMG:                         },
          [1657717291.810641][3361:3366] CHIP:DMG:
          [1657717291.810668][3361:3366] CHIP:DMG:                 },
          [1657717291.810700][3361:3366] CHIP:DMG:
          [1657717291.810725][3361:3366] CHIP:DMG:         ],
          [1657717291.810757][3361:3366] CHIP:DMG:
          [1657717291.810782][3361:3366] CHIP:DMG:         InteractionModelRevision = 1
          [1657717291.810807][3361:3366] CHIP:DMG: },
          [1657717291.810869][3361:3366] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003F Command=0x0000_0000 Status=0x0
      disabled: true

    - label:
          "DUT binds GroupId with GroupKeySetID in the GroupKeyMap attribute
          list on GroupKeyManagement cluster to TH2 on Endpoint 0"
      PICS: GRPKEY.C.A0000
      verification: |
          ./chip-tool groupkeymanagement write group-key-map "[{"groupId": 1, "groupKeySetID": 42, "fabricIndex": 1}]" 2 0

          On DUT, Verify the success response for GroupKeySetID

          StatusIB =
                          {
                                  status = 0x00 (SUCCESS),
                  }
      disabled: true

    - label:
          "DUT sends AddGroup( Group Name and Group-ID) Command to TH2 on
          Endpoint 1."
      PICS: G.C.C00.Tx
      verification: |
          ./chip-tool groups add-group 0x0001 grp1 2 1

          On DUT, Verify the success response for AddGroup

          [1657717342.599740][3368:3373] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0004 Command 0x0000_0000
          [1657717342.599891][3368:3373] CHIP:TOO:   AddGroupResponse: {
          [1657717342.599959][3368:3373] CHIP:TOO:     status: 0
          [1657717342.600007][3368:3373] CHIP:TOO:     groupId: 1
          [1657717342.600054][3368:3373] CHIP:TOO:    }
          [1657717342.600130][3368:3373] CHIP:DMG: ICR moving

          ./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

            +-------------------------------------------------------------------------------------+
            | Available Groups :                                                                  |
            +-------------------------------------------------------------------------------------+
            | Group Id   |  KeySet Id     |   Group Name                                          |
            | 0x101           0x1a1            Group #1                                           |
            | 0x102           0x1a2            Group #2                                           |
            | 0x1               0x42              grp1                                                   |
            +-------------------------------------------------------------------------------------+"
      disabled: true

    - label:
          "TH1 writes Binding entry into DUT with Entry 1: Group = The Group ID
          in the AddGroup command sent from DUT to TH2"
      verification: |
          ./chip-tool binding write binding "[{"group" : "0x0001"}]" 73 1

          On TH, Verify the success response for binding entry

          [1657717436.184899][4353:4358] CHIP:DMG:                         StatusIB =
          [1657717436.184940][4353:4358] CHIP:DMG:                         {
          [1657717436.184981][4353:4358] CHIP:DMG:                                 status = 0x00 (SUCCESS),
          [1657717436.185022][4353:4358] CHIP:DMG:                         },
          [1657717436.185062][4353:4358] CHIP:DMG:
      disabled: true

    - label:
          "DUT is triggered to send Multicast message On command to its binding
          entries"
      PICS: OO.C.C01.Tx
      verification: |
          ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null },{"fabricIndex": 1, "privilege": 4, "authMode": 3, "subjects": [1], "targets": null }]" 74 0

          On TH(Chip-tool), Verify the success response for Acl:

          [1659075680.943991][2687:2692] CHIP:DMG:                         StatusIB =
          [1659075680.944052][2687:2692] CHIP:DMG:                         {
          [1659075680.944116][2687:2692] CHIP:DMG:                                 status = 0x00 (SUCCESS),

          ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null },{"fabricIndex": 1, "privilege": 4, "authMode": 3, "subjects": [1], "targets": null }]" 1 0

          On TH(Chip-tool), Verify the success response for Acl:

          [1659075680.943991][2687:2692] CHIP:DMG:                         StatusIB =
          [1659075680.944052][2687:2692] CHIP:DMG:                         {
          [1659075680.944116][2687:2692] CHIP:DMG:                                 status = 0x00 (SUCCESS),

          Press button no.2 on thread board
      disabled: true

    - label: "TH1 reads OnOff attribute from TH2 (Endpoint 1)"
      PICS: OO.C.C01.Tx
      verification: |
          ./chip-tool onoff read on-off 1 1

          On TH (Chip-tool), Verify the value is set to ON

          [1657717900.832851][4381:4386] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 1558029216
          [1657717900.832890][4381:4386] CHIP:TOO:   OnOff: TRUE
      disabled: true

    - label: "TH1 removes all the binding entries from DUT"
      verification: |
          ./chip-tool binding write binding "[]" 73 1

          On TH(Chip-tool), Verify the success response for removing binding entry

          [1659362827.431927][2469:2475] CHIP:DMG:                         StatusIB =
          [1659362827.431996][2469:2475] CHIP:DMG:                         {
          [1659362827.432070][2469:2475] CHIP:DMG:                                 status = 0x00 (SUCCESS),
          [1659362827.432154][2469:2475] CHIP:DMG:                         },
      disabled: true

    - label:
          "DUT is triggered to send Multicast message off command to its binding
          entries"
      PICS: OO.C.C00.Tx
      verification: |
          Press button no.2 on thread board
      disabled: true

    - label: "TH1 reads OnOff attribute from TH2 (Endpoint 1)"
      PICS: OO.C.C01.Tx
      verification: |
          ./chip-tool onoff read on-off 1 1

          On TH(Chip-tool), Verify the value is set to ON

          [1657718251.169765][4425:4431] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 1558029223
          [1657718251.169817][4425:4431] CHIP:TOO:   OnOff: TRUE
      disabled: true
