# 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: "DeviceTypeList"
      response:
          value: [{ type: 22, revision: 1 }]

    - label: "Read attribute Server list"
      command: "readAttribute"
      attribute: "ServerList"
      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?)
                  0xFFF1FC06, # Fault Injection
              ]

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

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