# 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.
# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default

name: 15.4.2. [TC-SC-4.2] Discovery [DUT as Commissioner]

PICS:
    - MCORE.ROLE.COMMISSIONER

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

tests:
    - label: "Note"
      verification: |
          Chip-tool command used below are an example to verify the  DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command
      disabled: true

    - label:
          "By any means, TH adds an unknown key/value pair in the advertised
          data(e.g. AB=12345) and is in Commissioning Mode"
      verification: |
          Run all cluster app in one TH Terminal

          Run the  unknown key/value pair on second TH Terminal with the same discriminator as the one in the first teminal:

          avahi-publish-service --subtype=_S3._sub._matterc._udp --subtype=_L840._sub._matterc._udp DD200C20D25AE5F7 --subtype=_CM._sub._matterc._udp _matterc._udp 11111 D=3840 CM=1  INVALID_TEST=40 SII=5000 SAI=300 PH=36 PI= VP=65521+3276 T=1
      disabled: true

    - label: "DUT attempts to commission TH"
      verification: |
          Verify the DUT is able to commission the TH, in spite of the avahi publish with unknown key/value pair.
          As an example, In the case of chip-tool as commissioner, you can verify commissioning DUT with the below command, (Use the equivalent command on the DUT)

          % sudo ./out/debug/chip-tool pairing code 1 MT:-24J0YXE00KA0648G00

          [1661234861.142378][2599:2602] CHIP:BLE: New device scanned: E4:5F:01:0B:F6:6F
          [1661234861.142474][2599:2602] CHIP:BLE: Device discriminator match. Attempting to connect.
          [1661234861.146984][2599:2602] CHIP:BLE: Scan complete notification without an active scan.
          [1661234861.805967][2599:2604] CHIP:DL: Avahi browse: all for now
          [1661234861.810750][2599:2604] CHIP:DL: Avahi resolve found
          [1661234861.810840][2599:2604] CHIP:DIS: Discovered node:
          [1661234861.810861][2599:2604] CHIP:DIS:         Hostname: E45F010BF66D0000        [1661234861.810887][2599:2604] CHIP:DIS:         IP Address #1: fe80::e65f:1ff:fe0b:f66e
          [1661234861.810908][2599:2604] CHIP:DIS:         Port: 5540
          [1661234861.810928][2599:2604] CHIP:DIS:         Mrp Interval idle: 5000 ms
          [1661234861.810947][2599:2604] CHIP:DIS:         Mrp Interval active: 300 ms
          [1661234861.810966][2599:2604] CHIP:DIS:         TCP Supported: 1
          [1661234861.810985][2599:2604] CHIP:DIS:         Vendor ID: 65521
          [1661234861.811004][2599:2604] CHIP:DIS:         Product ID: 32769
          [1661234861.811023][2599:2604] CHIP:DIS:         Long Discriminator: 3840
          [1661234861.811042][2599:2604] CHIP:DIS:         Pairing Hint: 33
          [1661234861.811062][2599:2604] CHIP:DIS:         Instance Name: BE02F0C82E75A3BF
          [1661234861.811081][2599:2604] CHIP:DIS:         Commissioning Mode: 1

          [1661234862.488290][2599:2604] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0005
          [1661234862.488362][2599:2604] CHIP:CTL: Received CommissioningComplete response, errorCode=0
          [1661234862.488421][2599:2604] CHIP:CTL: Successfully finished commissioning step "SendComplete"
          [1661234862.488467][2599:2604] CHIP:CTL: Commissioning stage next step: "SendComplete" -> "Cleanup"
          [1661234862.488521][2599:2604] CHIP:CTL: Performing next commissioning step "Cleanup"
          [1661234862.488624][2599:2604] CHIP:CTL: Successfully finished commissioning step "Cleanup"
          [1661234862.488684][2599:2604] CHIP:TOO: Device commissioning completed with success
      disabled: true
