# 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:
    4.1.7. [TC-CADMIN-1.7] Commissioning window handling timeout and revocation
    using ECM [DUT - Commissioner]

PICS:
    - CADMIN.C
    - CADMIN.C.C00.Tx

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

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

    - label: "Precondition"
      verification: |
          Reset Devices to factory defaults
      disabled: true

    - label: "DUT_CR1 starts a commissioning process with TH_CE"
      PICS: CADMIN.C
      verification: |
          "1. Provision the TH_CE (all-cluster-app) device using DUT_CR1 (chip-tool ) on the raspi" "
      disabled: true

    - label:
          "DUT_CR1 sends command to TH_CE to open a commissioning window with a
          commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM"
      PICS: CADMIN.C.C00.Tx
      verification: |
          On DUT_CR1 send the below command

           Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command with their all-cluster-app and for the second and third commissioners.


          ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840

          Verify the Open commisioning window on the TH_CE(all-cluster-app) Log:

          [1660901022.112296][3045:3045] CHIP:DIS: mDNS service published: _matterc._udp
          [1660901022.112389][3045:3045] CHIP:ZCL: Commissioning window is now open
          [1660901022.112474][3045:3045] CHIP:DMG: Command handler moving to [ Preparing]
      disabled: true

    - label:
          "A User Consent screen pops up asking for Users permission to allow
          second commissioner to control TH_CE"
      PICS: CADMIN.UserInterfaceDisplay
      verification: |
          Verify the User Consent pop up screen. Verify that the pop up closes after user gives permission
      disabled: true

    - label:
          "11 digit Manual Code is displayed on the screen in textual format for
          User to see"
      PICS: CADMIN.UserInterfaceDisplay
      verification: |
          Verify that the displayed Manual Code is 11 digits long and doesn’t contain Vendor_ID or Product_ID.
      disabled: true

    - label: "A voice prompt of the Manual Code format should be heard"
      PICS: CADMIN.AudioInterface
      verification: |
          Verify voice prompt saying the manual code. Verify the voice prompt repeats if user asks.
      disabled: true

    - label:
          "TH_CR2 starts a commissioning process with TH_CE after
          PIXIT.CADMIN.CwDuration (that was given in step 2) + 10 seconds"
      PICS: CADMIN.C
      verification: |
          On TH_CR2 send the below command

          Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers

           (considering 36366524220 as the manual code generated by DUT controller)
          ./chip-tool pairing code 2 36366524220 --commissioner-name beta

          Verify the below message in the TH_CR2(chip-tool) Log:

          [1663841939.843550][13897:13897] CHIP:DL: NVS set: chip-counters/total-operational-hours = 0 (0x0)
          [1663841939.843617][13897:13897] CHIP:DL: Inet Layer shutdown
          [1663841939.843673][13897:13897] CHIP:DL: BLE shutdown
          [1663841939.843727][13897:13897] CHIP:DL: System Layer shutdown
          [1663841939.844009][13897:13897] CHIP:TOO: Run command failure: ../../examples/chip-tool/commands/pairing/PairingCommand.cpp:151: CHIP Error 0x00000003: Incorrect state
      disabled: true

    - label:
          "DUT_CR1 sends command to TH_CE to open a new commissioning window
          with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using
          ECM"
      PICS: CADMIN.C.C00.Tx
      verification: |
          On DUT_CR1 send the below command

          Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers

          ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840

          Verify the Open commisioning window on the TH_CE(all-cluster-app) Log:

          [1660901022.112296][3045:3045] CHIP:DIS: mDNS service published: _matterc._udp
          [1660901022.112389][3045:3045] CHIP:ZCL: Commissioning window is now open
          [1660901022.112474][3045:3045] CHIP:DMG: Command handler moving to [ Preparing]
      disabled: true

    - label: "DUT_CR1 sends command to TH_CE to revoke the commissioning window"
      PICS: CADMIN.C.C02.Tx
      verification: |
          On DUT_CR1 send the below command

            Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers

          ./chip-tool administratorcommissioning revoke-commissioning 1 0 --timedInteractionTimeoutMs 1000


          Verify the Commissioning window is closed in TH_CE(all-clusters-app) Log
          [1661485834.635244][6993:6993] CHIP:DIS: mDNS service published: _matter._tcp
          [1661485834.635293][6993:6993] CHIP:ZCL: Commissioning window is now closed
          [1661485834.635328][6993:6993] CHIP:DMG: Command handler moving to [ Preparing]
      disabled: true

    - label: "TH_CR2 starts a commissioning process with TH_CE"
      PICS: CADMIN.C
      verification: |
          On TH_CR2 send the below command

            Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers

           (considering 34921141778 as the manual code generated by DUT controller)
          ./chip-tool pairing code 2 34921141778 --commissioner-name beta

          verify you got the following message in the TH_CR2(chip-tool) log
          CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33
          CHIP:TOO: Secure Pairing Failed
          CHIP:TOO: Pairing Failure: ../../third_party/connectedhomeip/src/protocols/secure_channel/PASESession.cpp:324: CHIP Error 0x00000032: Timeout
      disabled: true

    - label: "DUT_CR1 sends command to TH_CE to revoke the commissioning window"
      PICS: CADMIN.C.C02.Tx
      verification: |
          On DUT_CR1 send the below command

            Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers

          ./chip-tool administratorcommissioning revoke-commissioning 1 0 --timedInteractionTimeoutMs 1000


          Verify the Commissioning window is closed in TH_CE(all-clusters-app) Log

          [1661485921.687243][6993:6993] CHIP:ZCL: Received command to close commissioning window
          [1661485921.687265][6993:6993] CHIP:ZCL: Commissioning window is currently not open
          [1661485921.687298][6993:6993] CHIP:DMG: Command handler moving to [ Preparing]
      disabled: true

    - label:
          "DUT_CR1 sends commands to TH_CE to write and read the Basic
          Information Clusters NodeLabel mandatory attribute"
      PICS: BINFO.C.A0005
      verification: |
          On DUT_CR1 send the below command

            Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers
          ./chip-tool basic write node-label te5new 1 0

          Verify Write request on TH_CE(all-clusters-app) Log

          [1660894021.901330][2871:2871] CHIP:EM: Handling via exchange: 9616r, Delegate: 0xaaaada21ffc0
          [1660894021.901426][2871:2871] CHIP:IM: Received Write request
          [1660894021.901484][2871:2871] CHIP:DMG: IM WH moving to [Initialized]
          [1660894021.901613][2871:2871] CHIP:DMG: WriteRequestMessage =
          [1660894021.901676][2871:2871] CHIP:DMG: {
          [1660894021.901735][2871:2871] CHIP:DMG:         suppressResponse = false,
          [1660894021.901802][2871:2871] CHIP:DMG:         timedRequest = false,
          [1660894021.901864][2871:2871] CHIP:DMG:         AttributeDataIBs =
          [1660894021.901940][2871:2871] CHIP:DMG:         [
          [1660894021.902001][2871:2871] CHIP:DMG:                 AttributeDataIB =
          [1660894021.902071][2871:2871] CHIP:DMG:                 {
          [1660894021.902136][2871:2871] CHIP:DMG:                         AttributePathIB =
          [1660894021.902219][2871:2871] CHIP:DMG:                         {
          [1660894021.902302][2871:2871] CHIP:DMG:                                 Endpoint = 0x0,
          [1660894021.902394][2871:2871] CHIP:DMG:                                 Cluster = 0x28,
          [1660894021.902488][2871:2871] CHIP:DMG:                                 Attribute = 0x0000_0005,
          [1660894021.902574][2871:2871] CHIP:DMG:                         }
          [1660894021.902827][2871:2871] CHIP:DMG:
          [1660894021.902912][2871:2871] CHIP:DMG:                         Data = "te5new" (6 chars),
          [1660894021.902985][2871:2871] CHIP:DMG:                 },

          ./chip-tool basic read node-label 1 0
          Verify read request on TH_CE(all-clusters-app) Log


          [1660894142.828718][2871:2871] CHIP:EM: Handling via exchange: 62454r, Delegate: 0xaaaada21ffc0
          [1660894142.828834][2871:2871] CHIP:IM: Received Read request
          [1660894142.829023][2871:2871] CHIP:DMG: ReadRequestMessage =
          [1660894142.829097][2871:2871] CHIP:DMG: {
          [1660894142.829153][2871:2871] CHIP:DMG:         AttributePathIBs =
          [1660894142.829235][2871:2871] CHIP:DMG:         [
          [1660894142.829306][2871:2871] CHIP:DMG:                 AttributePathIB =
          [1660894142.829376][2871:2871] CHIP:DMG:                 {
          [1660894142.829449][2871:2871] CHIP:DMG:                         Endpoint = 0x0,
          [1660894142.829532][2871:2871] CHIP:DMG:                         Cluster = 0x28,
          [1660894142.829627][2871:2871] CHIP:DMG:                         Attribute = 0x0000_0005,
          [1660894142.829703][2871:2871] CHIP:DMG:                 }
          [1660894142.829777][2871:2871] CHIP:DMG:
      disabled: true

    - label:
          "DUT_CR1 sends command to TH_CE to open a commissioning window with a
          commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM"
      PICS: CADMIN.C.C00.Tx
      verification: |
          On DUT_CR1 send the below command

            Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers

          ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840

          Verify the Commissioning window is opened in TH_CE(all-clusters-app) Log

          [1660901022.112296][3045:3045] CHIP:DIS: mDNS service published: _matterc._udp
          [1660901022.112389][3045:3045] CHIP:ZCL: Commissioning window is now open
          [1660901022.112474][3045:3045] CHIP:DMG: Command handler moving to [ Preparing]
      disabled: true

    - label: "TH_CR2 starts a commissioning process with TH_CE"
      PICS: CADMIN.C
      verification: |
          On TH_CR2 send the below command

            Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers

           (considering 35256543344 as the manual code generated by DUT controller)
          ./chip-tool pairing code 2 35256543344 --commissioner-name beta

           Verify whether you got below message in the log of TH_CR2(CHIP-TOOL)
          Device commissioning completed with success
      disabled: true

    - label: "TH_CR3 starts a commissioning process with TH_CE"
      PICS: CADMIN.C
      verification: |
          On TH_CR3 send the below command

           Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command with their all-cluster-app and for the second and third commissioners.

            (considering 35256543344 as the manual code generated by DUT controller)
          ./chip-tool pairing code 3 35256543344 --commissioner-name gamma

          verify you got the following message in the TH_CR3(chip-tool) log

          CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33
          CHIP:TOO: Secure Pairing Failed
          CHIP:TOO: Pairing Failure: ../../third_party/connectedhomeip/src/protocols/secure_channel/PASESession.cpp:324: CHIP Error 0x00000032: Timeout
      disabled: true
