# 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: "AdministratorCommissioning"
      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: "AdministratorCommissioning"
      command: "RevokeCommissioning"
      timedInteractionTimeoutMs: 10000

    - label: "Open Commissioning Window from alpha again"
      cluster: "AdministratorCommissioning"
      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: "AdministratorCommissioning"
      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"
      command: "readAttribute"
      attribute: "NodeLabel"
      response:
          value: ""
          saveAs: readFromAlpha

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

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

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