# 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: Test Multi Admin

config:
    nodeId: 0x12344321
    nodeIdForDuplicateCommissioning:
        type: node_id
        defaultValue: 0x11
    nodeId2:
        type: node_id
        defaultValue: 0xCAFE
    nodeId3:
        type: node_id
        defaultValue: 0xC00FEE
    endpoint: 0
    discriminator:
        type: int16u
        defaultValue: 3840
    payload:
        type: char_string
        defaultValue: "MT:-24J0AFN00KA0648G00" # This value needs to be generated automatically

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

    - label:
          "Start target device with the provided discriminator for basic
          commissioning advertisement"
      cluster: "SystemCommands"
      command: "Start"
      arguments:
          values:
              - name: "discriminator"
                value: discriminator

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

    - label: "Commission from alpha when the commissioning window is not opened"
      identity: "alpha"
      cluster: "CommissionerCommands"
      command: "PairWithCode"
      arguments:
          values:
              - name: "nodeId"
                value: nodeIdForDuplicateCommissioning
              - name: "payload"
                value: payload
      response:
          error: FAILURE

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

    - label: "Commission from alpha again"
      identity: "alpha"
      cluster: "CommissionerCommands"
      command: "PairWithCode"
      arguments:
          values:
              - name: "nodeId"
                value: nodeIdForDuplicateCommissioning
              - name: "payload"
                value: payload
      response:
          error: FAILURE

    - label: "Check that we just have the one fabric and did not add a new one"
      identity: "alpha"
      cluster: "Operational Credentials"
      command: "readAttribute"
      attribute: "Fabrics"
      fabricFiltered: false
      response:
          value: [{ "NodeID": nodeId }]

    - label: "Close Commissioning Window after failed commissioning"
      cluster: "Administrator Commissioning"
      command: "RevokeCommissioning"
      timedInteractionTimeoutMs: 10000

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

    - label: "Commission from beta"
      identity: "beta"
      cluster: "CommissionerCommands"
      command: "PairWithCode"
      arguments:
          values:
              - name: "nodeId"
                value: nodeId2
              - 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: nodeId2

    - label: "Open Commissioning Window from beta"
      identity: "beta"
      cluster: "Administrator Commissioning"
      command: "OpenBasicCommissioningWindow"
      timedInteractionTimeoutMs: 10000
      arguments:
          values:
              - name: "CommissioningTimeout"
                value: 180

    - label: "Commission from gamma"
      identity: "gamma"
      cluster: "CommissionerCommands"
      command: "PairWithCode"
      arguments:
          values:
              - name: "nodeId"
                value: nodeId3
              - name: "payload"
                value: payload

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

    - label: "read the mandatory attribute: NodeLabel from alpha"
      identity: "alpha"
      cluster: "Basic Information"
      command: "readAttribute"
      attribute: "NodeLabel"
      response:
          value: ""
          saveAs: readFromAlpha

    - label: "write the mandatory attribute NodeLabel from beta"
      identity: "beta"
      cluster: "Basic Information"
      command: "writeAttribute"
      attribute: "NodeLabel"
      arguments:
          value: "written from beta"

    - label: "read the mandatory attribute: NodeLabel from gamma"
      identity: "gamma"
      cluster: "Basic Information"
      command: "readAttribute"
      attribute: "NodeLabel"
      response:
          constraints:
              notValue: readFromAlpha

    - label: "write the mandatory attribute NodeLabel back to default"
      identity: "alpha"
      cluster: "Basic Information"
      command: "writeAttribute"
      attribute: "NodeLabel"
      arguments:
          value: readFromAlpha
