# Copyright (c) 2022 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: General Commissioning cluster basic tests

config:
    nodeId: 0x12344321
    cluster: "General Commissioning"
    endpoint: 0
    discriminator:
        type: int16u
        defaultValue: 3840
    payload:
        type: char_string
        defaultValue: "MT:-24J0AFN00KA0648G00" # This value needs to be generated automatically

tests:
    - label: "Wait for the commissioned device to be retrieved"
      cluster: "DelayCommands"
      command: "WaitForCommissionee"
      arguments:
          values:
              - name: "nodeId"
                value: nodeId

    - label: "Write Breadcrumb (1/2)"
      command: "writeAttribute"
      attribute: "Breadcrumb"
      arguments:
          value: 137438953472

    - label: "Read back Breadcrumb (1/2)"
      command: "readAttribute"
      attribute: "Breadcrumb"
      response:
          value: 137438953472

    - label: "Write Breadcrumb (2/2)"
      command: "writeAttribute"
      attribute: "Breadcrumb"
      arguments:
          value: 81

    - label: "Read back Breadcrumb (2/2)"
      command: "readAttribute"
      attribute: "Breadcrumb"
      response:
          value: 81

    - label: "Reboot to reset Breadcrumb"
      cluster: "SystemCommands"
      command: "Reboot"

    - label: "Connect to the device again"
      cluster: "DelayCommands"
      command: "WaitForCommissionee"
      arguments:
          values:
              - name: "nodeId"
                value: nodeId

    - label: "Read back Breadcrumb after reboot and ensure it was not persisted"
      command: "readAttribute"
      attribute: "Breadcrumb"
      response:
          value: 0

    - label: "Set Breadcrumb to nonzero value"
      command: "writeAttribute"
      attribute: "Breadcrumb"
      arguments:
          value: 1

    - label: "Check Breadcrumb set worked"
      command: "readAttribute"
      attribute: "Breadcrumb"
      response:
          value: 1

    - label: "Send CommissioningComplete without armed fail-safe"
      command: "CommissioningComplete"
      response:
          values:
              - name: errorCode
                value: 3 # NoFailSafe

    - label: "Check Breadcrumb was not touched by invalid CommissioningComplete"
      command: "readAttribute"
      attribute: "Breadcrumb"
      response:
          value: 1

    - label: "Open Commissioning Window from alpha"
      cluster: "AdministratorCommissioning"
      command: "OpenBasicCommissioningWindow"
      timedInteractionTimeoutMs: 10000
      arguments:
          values:
              - name: "CommissioningTimeout"
                value: 180

    # Arming a fail-safe over CASE while a commissioning window is open should not work.
    - label: "Try to arm fail-safe"
      command: "ArmFailSafe"
      arguments:
          values:
              - name: expiryLengthSeconds
                value: 10
              - name: breadcrumb
                value: 5000
      response:
          values:
              - name: errorCode
                value: 4 # BusyWithOtherAdmin

    - label:
          "Check Breadcrumb was not touched by ArmFailSafe with commissioning
          window open"
      command: "readAttribute"
      attribute: "Breadcrumb"
      response:
          value: 1

    - label: "Reset Breadcrumb to 0 so we can commission"
      command: "writeAttribute"
      attribute: "Breadcrumb"
      arguments:
          value: 0

    - label: "Commission from beta"
      identity: "beta"
      cluster: "CommissionerCommands"
      command: "PairWithCode"
      arguments:
          values:
              - name: "nodeId"
                value: 0x12345
              - name: "payload"
                value: payload

    - label: "Wait for the commissioned device to be retrieved for beta"
      identity: "beta"
      cluster: "DelayCommands"
      command: "WaitForCommissionee"
      arguments:
          values:
              - name: "nodeId"
                value: 0x12345

    - label: "Arm fail-safe"
      command: "ArmFailSafe"
      arguments:
          values:
              - name: expiryLengthSeconds
                value: 500
              - name: breadcrumb
                value: 2
      response:
          values:
              - name: errorCode
                value: 0 # OK

    - label: "Check Breadcrumb was properly set by ArmFailSafe"
      command: "readAttribute"
      attribute: "Breadcrumb"
      response:
          value: 2

    - label: "Try to arm fail-safe from wrong fabric"
      command: "ArmFailSafe"
      identity: "beta"
      arguments:
          values:
              - name: expiryLengthSeconds
                value: 10
              - name: breadcrumb
                value: 5000
      response:
          values:
              - name: errorCode
                value: 4 # BusyWithOtherAdmin

    - label:
          "Check Breadcrumb was not touched by ArmFailSafe with existing
          fail-safe armed"
      command: "readAttribute"
      attribute: "Breadcrumb"
      response:
          value: 2

    - label: "Send CommissioningComplete from wrong fabric"
      command: "CommissioningComplete"
      identity: "beta"
      response:
          values:
              - name: errorCode
                value: 2 # InvalidAuthentication

    - label:
          "Check Breadcrumb was not touched by CommissioningComplete from wrong
          fabric"
      command: "readAttribute"
      attribute: "Breadcrumb"
      response:
          value: 2

    - label: "Close out the fail-safe gracefully"
      command: "CommissioningComplete"
      response:
          values:
              - name: errorCode
                value: 0 # Ok

    - label: "Check Breadcrumb was reset to 0 by CommissioningComplete"
      command: "readAttribute"
      attribute: "Breadcrumb"
      response:
          value: 0

    - label: "Arm fail-safe again"
      command: "ArmFailSafe"
      arguments:
          values:
              - name: expiryLengthSeconds
                value: 500
              - name: breadcrumb
                value: 3
      response:
          values:
              - name: errorCode
                value: 0 # OK

    - label: "Check Breadcrumb was set by arming fail-safe again"
      command: "readAttribute"
      attribute: "Breadcrumb"
      response:
          value: 3

    - label: "Force-expire the fail-safe"
      command: "ArmFailSafe"
      arguments:
          values:
              - name: expiryLengthSeconds
                value: 0
              - name: breadcrumb
                value: 4
      response:
          values:
              - name: errorCode
                value: 0 # OK

    - label: "Check Breadcrumb was reset by expiring the fail-safe"
      command: "readAttribute"
      attribute: "Breadcrumb"
      response:
          value: 0

    - label: "Validate presence of SupportsConcurrentConnection"
      command: "readAttribute"
      attribute: "SupportsConcurrentConnection"
      response:
          constraints:
              type: boolean
