# Copyright (c) 2023 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: Client Monitoring Tests

config:
    nodeId: 0x12344321
    cluster: "Client Monitoring"
    endpoint: 0

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

    - label: "Register Client 2 - Invalid"
      command: "RegisterClientMonitoring"
      arguments:
          values:
              - name: "ClientNodeId"
                value: 0
              - name: "ICid"
                value: 0
      response:
          error: FAILURE

    - label: "Register Client 1"
      command: "RegisterClientMonitoring"
      arguments:
          values:
              - name: "ClientNodeId"
                value: 10
              - name: "ICid"
                value: 20

    - label: "Register Client 2 - Invalid"
      command: "RegisterClientMonitoring"
      arguments:
          values:
              - name: "ClientNodeId"
                value: 11
              - name: "ICid"
                value: 21
      response:
          error: RESOURCE_EXHAUSTED

    - label: "Verify Register Client"
      command: "readAttribute"
      attribute: "ExpectedClients"
      response:
          value: [{ ClientNodeId: 10, ICid: 20 }]

    - label: "Unregister Client - Invalid Client NodeId"
      command: "UnregisterClientMonitoring"
      arguments:
          values:
              - name: "ClientNodeId"
                value: 30
              - name: "ICid"
                value: 20
      response:
          error: FAILURE

    - label: "Unregister Client - Invalid ICid"
      command: "UnregisterClientMonitoring"
      arguments:
          values:
              - name: "ClientNodeId"
                value: 10
              - name: "ICid"
                value: 30
      response:
          error: FAILURE

    - label: "Unregister Client - Valid"
      command: "UnregisterClientMonitoring"
      arguments:
          values:
              - name: "ClientNodeId"
                value: 10
              - name: "ICid"
                value: 20

    - label: "Verify Register Client - Empty"
      command: "readAttribute"
      attribute: "ExpectedClients"
      response:
          value: []
