# Copyright (c) 2021 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: Descriptor Cluster Tests

config:
    nodeId: 0x12344321
    cluster: "Descriptor"
    endpoint: 0

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

    - label: "Read attribute Device list"
      command: "readAttribute"
      attribute: "Device List"
      response:
          value: [{ type: 22, revision: 1 }]

    - label: "Read attribute Server list"
      command: "readAttribute"
      attribute: "Server List"
      response:
          value: [
                  0x0003, # Identify
                  0x0004, # Groups
                  0x001D, # Descriptor
                  0x001E, # Binding
                  0x001F, # Access Control
                  0x0028, # Basic Information
                  0x002A, # OTA Software Update Requestor
                  0x002B, # Localization Configuration
                  0x002C, # Time Format Localization
                  0x002D, # Unit Localization
                  0x002E, # Power Source Configuration
                  0x002F, # Power Source
                  0x0030, # General Commissioning
                  0x0031, # Network Commissioning
                  0x0032, # Diagnostic Logs
                  0x0033, # General Diagnostics
                  0x0034, # Software Diagnostics
                  0x0035, # Thread Network Diagnostiscs
                  0x0036, # WiFi Network Diagnostics
                  0x0037, # Ethernet Network Diagnostics
                  0x003C, # Administrator Commissioning
                  0x003E, # Operational Credentials
                  0x003F, # Group Key Management
                  0x0040, # Fixed Label
                  0x0041, # User Label
                  0x0405, # Relative Humidity Measurement (why on EP0?)
              ]

    - label: "Read attribute Client list"
      command: "readAttribute"
      attribute: "Client List"
      response:
          value: [
                  0x0029, # OTA Software Update Provider
              ]

    - label: "Read attribute Parts list"
      command: "readAttribute"
      attribute: "Parts List"
      response:
          value: [1, 2]
