# 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:
    3.1.11. [TC-DD-1.11] Concatenation - QR Code Onboarding Payload Verification
    [DUT - Commissioner]

PICS:
    - MCORE.ROLE.COMMISSIONER
    - MCORE.DD.QR_COMMISSIONING

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

tests:
    - label:
          "Scan QR code using concatenation (which supports the commissioning of
          all the TH devices)"
      PICS: MCORE.DD.CTRL_CONCATENATED_QR_CODE_1
      verification: |
          Out of Scope for V1.0 as Concatenated QR codes are not supported yet
          https://github.com/project-chip/connectedhomeip/issues/5331

          1. Lauch TH chip-all-clusters-app
          ubuntu@matter-7:~/Apr18_dut/connectedhomeip/examples/all-clusters-app/linux/out/all-clusters-app$ sudo ./chip-all-clusters-app --wifi

          [13293:13293] CHIP:DL: Device Configuration:
          [1653306603.740569][13293:13293] CHIP:DL:   Serial Number: TEST_SN
          [1653306603.740607][13293:13293] CHIP:DL:   Vendor Id: 65521 (0xFFF1)
          [1653306603.740644][13293:13293] CHIP:DL:   Product Id: 32769 (0x8001)
          [1653306603.740676][13293:13293] CHIP:DL:   Hardware Version: 0
          [1653306603.740700][13293:13293] CHIP:DL:   Setup Pin Code (0 for UNKNOWN/ERROR): 20202021
          [1653306603.740722][13293:13293] CHIP:DL:   Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00)
          [1653306603.740752][13293:13293] CHIP:DL:   Manufacturing Date: (not set)
          [1653306603.740777][13293:13293] CHIP:DL:   Device Type: 65535 (0xFFFF)
          [1653306603.740798][13293:13293] CHIP:-: ==== Onboarding payload for Standard Commissioning Flow ====
          [1653306603.740846][13293:13293] CHIP:SVR: SetupQRCode: [MT:-24J042C00KA0648G00]
          [1653306603.740877][13293:13293] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code:
          [1653306603.740898][13293:13293] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J042C00KA0648G00
          [1653306603.740929][13293:13293] CHIP:SVR: Manual pairing code: [34970112332]
          [1653306603.740951][13293:13293] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ====
          [1653306603.741000][13293:13293] CHIP:SVR: SetupQRCode: [MT:-24J0YXE00KA0648G00]
          [1653306603.741028][13293:13293] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code:
          [1653306603.741049][13293:13293] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0YXE00KA0648G00
          [1653306603.741081][13293:13293] CHIP:SVR: Manual pairing code: [749701123365521327694]
      disabled: true

    - label:
          "Verify the DUT follows the correct order of onboarding the TH devices
          which must be from first to last starting from left to right."
      PICS: MCORE.DD.CTRL_CONCATENATED_QR_CODE_1_INORDER
      verification: |
          Out of Scope for V1.0 as Concatenated QR codes are not supported yet
          https://github.com/project-chip/connectedhomeip/issues/5331
          Vendor specific field testcase
      disabled: true

    - label:
          "Verify the DUT follows the correct order of onboarding the TH devices
          which must be from first to last starting from left to right."
      PICS:
          "!(MCORE.DD.CTRL_CONCATENATED_QR_CODE_1) &&
          MCORE.DD.CTRL_CONCATENATED_QR_CODE_2"
      verification: |
          Out of Scope for V1.0 as Concatenated QR codes are not supported yet
          https://github.com/project-chip/connectedhomeip/issues/5331
          Vendor specific field testcase
      disabled: true

    - label:
          "Verify the DUT does NOT indicate to the user the need to commission
          TH devices one by one by scanning their individual QR codes, but
          instead warns the user (in a way described by the provider of the DUT)
          that the QR code cannot be processed."
      PICS:
          "!(MCORE.DD.CTRL_CONCATENATED_QR_CODE_1) &&
          !(MCORE.DD.CTRL_CONCATENATED_QR_CODE_2)"
      verification: |
          Out of Scope for V1.0 as Concatenated QR codes are not supported yet
          https://github.com/project-chip/connectedhomeip/issues/5331
          Vendor specific field testcase
      disabled: true
