# 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:
    24.1.24. [TC-CADMIN-1.24] Open commissioning window - durations max and
    max+1 [ECM] [DUT - Commissionee]

PICS:
    - CADMIN.S

config:
    nodeId: 0x12344321
    timeout: 330
    endpoint: 0

tests:
    - label: "Factory Reset the DUT_CE"
      cluster: "SystemCommands"
      PICS: PICS_SDK_CI_ONLY
      command: "FactoryReset"

    - label: "Factory Reset the DUT_CE"
      verification: |
          Not implemented in YAML
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_SKIP_SAMPLE_APP
      arguments:
          values:
              - name: "message"
                value: "Please reboot the DUT and enter 'y' after DUT starts"
              - name: "expectedValue"
                value: "y"

    - label: "TH_CR1 starts a commissioning process with DUT_CE"
      cluster: "DelayCommands"
      command: "WaitForCommissionee"
      PICS: CADMIN.S.C00.Rsp
      arguments:
          values:
              - name: "nodeId"
                value: nodeId

    - label: "TH_CR1 opens a commissioning window on DUT_CE"
      cluster: "AdministratorCommissioning"
      command: "OpenCommissioningWindow"
      PICS: CADMIN.S.C00.Rsp
      timedInteractionTimeoutMs: 10000
      arguments:
          values:
              - name: "CommissioningTimeout"
                value: 180
              - name: "PAKEVerifier"
                value: "\x06\xc7\x56\xdf\xfc\xd7\x22\x65\x34\x52\xa1\x2d\xcd\x94\x5d\x8c\x54\xda\x2b\x0f\x3c\xbd\x1b\x4d\xc3\xf1\xad\xb2\x23\xae\xb2\x6b\x04\x7c\xd2\x4c\x96\x86\x6f\x97\x9b\x1d\x83\xec\x50\xe2\xb4\xae\x30\xcd\xf2\xfd\xb3\x2b\xd8\xa2\x11\xb8\x37\xdc\x94\xed\xcd\x56\xf4\xd1\x43\x77\x19\x10\x76\xbf\xc5\x9d\x99\xb7\xdd\x30\x53\xef\xd6\xf0\x2c\x44\x34\xf2\xbd\xd2\x7a\xa4\xf9\xce\xa7\x0d\x73\x8e\x4c"
              - name: "discriminator"
                value: 3840
              - name: "iterations"
                value: 1000
              - name: "salt"
                value: "SPAKE2P Key Salt"

    - label: "Wait for commissioning Window to 301 seconds"
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 181000

    - label:
          "TH_CR1 reads the window status to verify the DUT_CE window is closed"
      cluster: "AdministratorCommissioning"
      command: "readAttribute"
      attribute: "WindowStatus"
      PICS: CADMIN.S.A0000
      response:
          value: 0

    - label: "TH_CR1 opens a commissioning window on DUT_CE"
      cluster: "AdministratorCommissioning"
      command: "OpenCommissioningWindow"
      PICS: CADMIN.S.C00.Rsp
      timedInteractionTimeoutMs: 10000
      arguments:
          values:
              - name: "CommissioningTimeout"
                value: 179
              - name: "PAKEVerifier"
                value: "\x06\xc7\x56\xdf\xfc\xd7\x22\x65\x34\x52\xa1\x2d\xcd\x94\x5d\x8c\x54\xda\x2b\x0f\x3c\xbd\x1b\x4d\xc3\xf1\xad\xb2\x23\xae\xb2\x6b\x04\x7c\xd2\x4c\x96\x86\x6f\x97\x9b\x1d\x83\xec\x50\xe2\xb4\xae\x30\xcd\xf2\xfd\xb3\x2b\xd8\xa2\x11\xb8\x37\xdc\x94\xed\xcd\x56\xf4\xd1\x43\x77\x19\x10\x76\xbf\xc5\x9d\x99\xb7\xdd\x30\x53\xef\xd6\xf0\x2c\x44\x34\xf2\xbd\xd2\x7a\xa4\xf9\xce\xa7\x0d\x73\x8e\x4c"
              - name: "discriminator"
                value: 3840
              - name: "iterations"
                value: 1000
              - name: "salt"
                value: "SPAKE2P Key Salt"
      response:
          error: INVALID_COMMAND

    - label:
          "TH_CR1 reads the window status to verify the DUT_CE window is closed"
      cluster: "AdministratorCommissioning"
      command: "readAttribute"
      attribute: "WindowStatus"
      PICS: CADMIN.S.A0000
      response:
          value: 0
