# 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: ArmFailSafe Tests

config:
    nodeId: 0x12344321
    endpoint: 0

tests:
    - label: "Reboot target device"
      cluster: "SystemCommands"
      command: "Reboot"

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

    - label: "Query fabrics list"
      command: "readAttribute"
      cluster: "Operational Credentials"
      attribute: "Fabrics"
      response:
          value: [{ Label: "", NodeID: nodeId }]
          constraints:
              type: list

    - label: "ArmFailSafe on target device with timeout 0"
      cluster: "General Commissioning"
      command: "ArmFailSafe"
      arguments:
          values:
              - name: "ExpiryLengthSeconds"
                value: 0
              - name: "Breadcrumb"
                value: 0
      response:
          values:
              - name: "ErrorCode"
                value: 0

    - label: "Reads NodeLabel mandatory attribute of target device"
      command: "readAttribute"
      cluster: "Basic Information"
      attribute: "NodeLabel"
      response:
          value: ""

    - label: "Invoke AddTrustedRootCertificate without fail-safe"
      command: "AddTrustedRootCertificate"
      cluster: "Operational Credentials"
      arguments:
          values:
              - name: RootCACertificate
                value: "00000000"

      response:
          error: FAILSAFE_REQUIRED

    - label: "Invoke AddNOC without fail-safe"
      command: "AddNOC"
      cluster: "Operational Credentials"
      arguments:
          values:
              - name: NOCValue
                value: "00112233"
              - name: IPKValue
                value: "\x00\x01\x02\x03\x04\x05\x06\x07\x00\x01\x02\x03\x04\x05\x06\x07"
              - name: CaseAdminSubject
                value: 1234
              - name: AdminVendorId
                value: 65521
      response:
          error: FAILSAFE_REQUIRED

    - label: "Invoke UpdateNOC without fail-safe"
      command: "UpdateNOC"
      cluster: "Operational Credentials"
      arguments:
          values:
              - name: NOCValue
                value: "00112233"
      response:
          error: FAILSAFE_REQUIRED

    - label: "Invoke CSRRequest without fail-safe"
      command: "CSRRequest"
      cluster: "Operational Credentials"
      arguments:
          values:
              - name: CSRNonce
                value: "\x00\x01\x02\x03\x04\x05\x06\x07\x00\x01\x02\x03\x04\x05\x06\x07\x00\x01\x02\x03\x04\x05\x06\x07\x00\x01\x02\x03\x04\x05\x06\x07"
      response:
          error: FAILSAFE_REQUIRED
