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

name:
    24.1.23. [TC-CADMIN-1.23] Open commissioning window - durations max and
    max+1 [BCM] [DUT - Commissionee]

PICS:
    - CADMIN.S
    - CADMIN.S.F00

config:
    nodeId: 0x12344321
    timeout: 200
    endpoint: 0
    payload:
        type: char_string
        defaultValue: "MT:-24J0AFN00KA0648G00"

tests:
    - label: "Precondition: Reset Devices to factory defaults"
      PICS: PICS_SDK_CI_ONLY
      cluster: "SystemCommands"
      command: "FactoryReset"

    - label: "Precondition: Reset Devices to factory defaults"
      verification: |
          Reset Devices to factory defaults
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_SKIP_SAMPLE_APP
      arguments:
          values:
              - name: "message"
                value: "Factory Reset the DUT and enter 'y' after success"
              - name: "expectedValue"
                value: "y"

    - label: "Step 1: TH_CR1 starts a commissioning process with DUT_CE"
      cluster: "CommissionerCommands"
      command: "PairWithCode"
      PICS: CADMIN.S
      arguments:
          values:
              - name: "nodeId"
                value: nodeId
              - name: "payload"
                value: payload

    - label: "Step 1: TH_CR1 commissioned with DUT_CE"
      cluster: "DelayCommands"
      command: "WaitForCommissionee"
      PICS: CADMIN.S.C01.Rsp
      arguments:
          values:
              - name: "nodeId"
                value: nodeId

    - label:
          "Step 2: TH_CR1 opens a commissioning window on DUT_CE using BCM with
          a value of 180 seconds"
      cluster: "Administrator Commissioning"
      command: "OpenBasicCommissioningWindow"
      PICS: CADMIN.S.C01.Rsp
      timedInteractionTimeoutMs: 10000
      arguments:
          values:
              - name: "CommissioningTimeout"
                value: 180

    - label:
          "Step 3: Wait for 181 seconds for commissioning Window to be closed"
      PICS: CADMIN.S.C01.Rsp
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 181000

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

    - label:
          "Step 5: TH_CR1 opens a commissioning window on DUT_CE using BCM with
          a value of 179 seconds"
      cluster: "Administrator Commissioning"
      command: "OpenBasicCommissioningWindow"
      PICS: CADMIN.S.C01.Rsp
      timedInteractionTimeoutMs: 10000
      arguments:
          values:
              - name: "CommissioningTimeout"
                value: 179
      response:
          error: INVALID_COMMAND

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