# 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.3.12. [TC-DD-3.12] Commissioning Flow = 1 (User-Intent Flow) - QR Code
    [DUT - Commissioner]

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

config:
    nodeId: 0x12344321
    cluster: "Basic Information"
    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: "Preconditions"
      verification: |
          1 - DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available.

          2 - 5.1.3 - QR Code is printed on the Commissionee device or in additional provided materials (ex: manual, companion app, web service).

          An example onboarding QR code could be "MT:-24J029Q00KA0648G00" (following 5.1.3 "QR Code", Table 34 "Packed Binary Data Structure for Onboarding Payload") which includes:

          - 3-bit Version String=000

          - 16-bit Vendor ID=0xFFF1 (as defined in section 2.5.2. "Vendor Identifier")

          - 16-bit Product ID=0x8001 (as defined in section 2.5.3. "Product Identifier")

          - 2-bit Custom Flow=10 (Custom Commissioning Flow = 2)

          - 8-bit Discovery Capabilities Bitmask=00000100 (OnNetwork)

          - 12-bit Discriminator=0xF00

          - 27-bit Passcode=20202021

          - 4-bit Padding=0000

          - no variable-length TLV Data included (as defined in section 5.1.3.1. "Payload", subsection "TLV Data")
      disabled: true

    - label:
          "Step 1a: User-Intent Commissioning Flow: Use a Commissionee with a QR
          code that has the Custom Flow field set to 1 and supports BLE for its
          Discovery Capability. Commissionee is NOT in commissioning mode.
          Ensure the Version bit string follows the current Matter spec.
          documentation."
      PICS: MCORE.DD.DISCOVERY_BLE
      verification: |
          Verifiy on TH(ALL-CLUSTER-APP):

           ./chip-all-clusters-app --capabilities 2 --custom-flow 1 --ble-device 1
          ...
          [1657234110.765249][370717:370717] CHIP:SVR: SetupQRCode: [MT:-24J0YXE00KA0648G00]
          [1657234110.765314][370717:370717] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code:
          [1657234110.765364][370717:370717] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0YXE00KA0648G00
      disabled: true

    - label: "Step 1b: Scan the QR code from the previous step using the DUT."
      PICS: MCORE.DD.SCAN_QR_CODE
      verification: |
          1. Verify the QR code is scanned by DUT

          Note: chip-tool does not support physically scanning QR codes
      disabled: true

    - label: "Step 1c: DUT parses QR code."
      PICS: MCORE.DD.DISCOVERY_BLE
      verification: |
          1. Parse the payload of the TH commissionee

          Verify on the DUT (CHIP-TOOL):
           ./chip-tool payload parse-setup-payload MT:-24J0YXE00KA0648G00

          2. Verify that TH logs do not show the commissionee being commissioned by the DUT.
      disabled: true

    - label:
          "Step 1d: User should follow any TH-specific steps for putting the TH
          Commissionee device into commissioning mode and to complete the
          commissioning process using BLE."
      PICS: MCORE.DD.DISCOVERY_BLE
      verification: |
          Verifiy on TH(ALL-CLUSTER-APP):
          [1651101988.943015][23212:23212] CHIP:SVR: Commissioning completed successfully
          [1651101988.943058][23212:23212] CHIP:DIS: Updating services using commissioning mode 0

          Verify on the DUT (CHIP-TOOL):
          ./chip-tool pairing code 1 MT:-24J0YXE00KA0648G00
          [1657234147237] [31454:16822562] CHIP: [CTL] Successfully finished commissioning step 'SendComplete'
          [1657234147237] [31454:16822562] CHIP: [CTL] Commissioning stage next step: 'SendComplete' -> 'Cleanup'
          [1657234147237] [31454:16822562] CHIP: [CTL] Performing next commissioning step 'Cleanup'
          [1657234147237] [31454:16822562] CHIP: [CTL] Successfully finished commissioning step 'Cleanup'
          [1657234147237] [31454:16822562] CHIP: [TOO] Device commissioning completed with success
      disabled: true

    - label:
          "Step 2a: User-Intent Commissioning Flow: Use a Commissionee with a QR
          code that has the Custom Flow field set to 1 and supports IP Network
          for its Discovery Capability. Commissionee is NOT in commissioning
          mode. Ensure the Version bit string follows the current Matter spec.
          documentation."
      PICS: MCORE.DD.DISCOVERY_IP
      verification: |
          Verifiy on TH(ALL-CLUSTER-APP):
          ./chip-all-clusters-app --custom-flow 1 --capabilities 4

          [1660353382.200125][249074:249074] CHIP:SVR: SetupQRCode: [MT:-24J029Q00KA0648G00]
          [1660353382.200152][249074:249074] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code:
          [1660353382.200173][249074:249074] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J029Q00KA0648G00
      disabled: true

    - label: "Step 2b: Scan the QR code from the previous step using the DUT."
      PICS: MCORE.DD.SCAN_QR_CODE
      verification: |
          1. Verify the QR code is scanned by DUT

          Note: chip-tool does not support physically scanning QR codes
      disabled: true

    - label: "Step 2c: DUT parses QR code."
      PICS: MCORE.DD.DISCOVERY_IP
      verification: |
          1. Parse the payload of the TH commissionee

          Verify on the DUT (CHIP-TOOL):
           ./chip-tool payload parse-setup-payload MT:-24J029Q00KA0648G00

          2. Verify that TH logs do not show the commissionee being commissioned by the DUT.
      disabled: true

    - label:
          "Step 2d: User should follow any TH-specific steps for putting the TH
          Commissionee device into commissioning mode and to complete the
          commissioning process using IP Network."
      PICS: MCORE.DD.DISCOVERY_IP
      verification: |
          Verifiy on TH(ALL-CLUSTER-APP):
          [1657234324.992098][370755:370755] CHIP:SVR: Commissioning completed successfully
          [1657234324.992146][370755:370755] CHIP:DIS: Updating services using commissioning mode 0

          Verify on the DUT (CHIP-TOOL):
          ./chip-tool pairing code 1 MT:-24J029Q00KA0648G00
          [1657234324847] [31475:16824564] CHIP: [CTL] Successfully finished commissioning step 'SendComplete'
          [1657234324847] [31475:16824564] CHIP: [CTL] Commissioning stage next step: 'SendComplete' -> 'Cleanup'
          [1657234324847] [31475:16824564] CHIP: [CTL] Performing next commissioning step 'Cleanup'
          [1657234324847] [31475:16824564] CHIP: [CTL] Successfully finished commissioning step 'Cleanup'
          [1657234324847] [31475:16824564] CHIP: [TOO] Device commissioning completed with success
      disabled: true

    - label:
          "Step 2e: User-Intent Commissioning Flow: Use a Commissionee with a QR
          code that has the Custom Flow field set to 1 and supports Wi-Fi PAF
          for its Discovery Capability. "
      PICS: MCORE.DD.DISCOVERY_PAF
      verification: |
          User has a QR code to pass into DUT.
          # ./chip-all-clusters-app --wifi --wifipaf --custom-flow 1 --capabilities 8
          [1719393010.693198][1592:1592] CHIP:SVR: SetupQRCode: [MT:-24J0IJ910KA0648G00]
          [1719393010.693213][1592:1592] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code:
          [1719393010.693222][1592:1592] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0IJ910KA0648G00
          [1719393010.693246][1592:1592] CHIP:SVR: Manual pairing code: [749701123365521327694]
      disabled: true

    - label: "Step 2f: Scan the QR code from the previous step using the DUT."
      PICS: MCORE.DD.SCAN_QR_CODE
      verification: |
          Verify the QR code has been scanned successfully.
      disabled: true

    - label: "Step 2g: DUT parses QR code."
      PICS: MCORE.DD.DISCOVERY_PAF
      verification: |
          Verify DUT has parsed the QR code. Verify TH has not been commissioned to the Matter network.
          $ sudo ./chip-tool payload parse-setup-payload MT:-24J0IJ910KA0648G00
          [1719393067.811966][28514:28514] CHIP:DL: ChipLinuxStorage::Init: Using KVS config file: /tmp/chip_tool_kvs
          [1719393067.812195][28514:28514] CHIP:DL: writing settings to file (/tmp/chip_tool_kvs-PRUpuW)
          [1719393067.812351][28514:28514] CHIP:DL: renamed tmp file to file (/tmp/chip_tool_kvs)
          [1719393067.812455][28514:28514] CHIP:SPL: Parsing base38Representation: MT:-24J0IJ910KA0648G00
          [1719393067.812626][28514:28514] CHIP:SPL: Version: 0
          [1719393067.812647][28514:28514] CHIP:SPL: VendorID: 65521
          [1719393067.812664][28514:28514] CHIP:SPL: ProductID: 32769
          [1719393067.812679][28514:28514] CHIP:SPL: Custom flow: 1 (USER ACTION REQUIRED)
          [1719393067.812698][28514:28514] CHIP:SPL: Discovery Bitmask: 0x08 (Wi-Fi PAF)
          [1719393067.812714][28514:28514] CHIP:SPL: Long discriminator: 3840 (0xf00)
          [1719393067.812729][28514:28514] CHIP:SPL: Passcode: 20202021
      disabled: true

    - label:
          "Step 2h: User should follow any TH-specific steps for putting the TH
          Commissionee device into commissioning mode and to complete the
          commissioning process using Wi-Fi PAF."
      PICS: MCORE.DD.DISCOVERY_PAF
      verification: |
          DUT commissions TH to the Matter network.
          $ sudo ./chip-tool pairing code-wifi 1 n_m_2g nxp12345 MT:-24J0IJ910KA0648G00
      disabled: true

    - label:
          "Step 3a: User-Intent Commissioning Flow: Use a Commissionee with a QR
          code that has the Custom Flow field set to 1 and supports SoftAP for
          its Discovery Capability. Commissionee is NOT in commissioning mode.
          Ensure the Version bit string follows the current Matter spec.
          documentation."
      PICS: MCORE.DD.DISCOVERY_SOFTAP
      verification: |
          Out of Scope
          SoftAP commissioning not currently supported
      disabled: true

    - label: "Step 3b: Scan the QR code from the previous step using the DUT."
      PICS: MCORE.DD.SCAN_QR_CODE
      verification: |
          Out of Scope
          SoftAP commissioning not currently supported
      disabled: true

    - label: "Step 3c: DUT parses QR code."
      PICS: MCORE.DD.DISCOVERY_SOFTAP
      verification: |
          Out of Scope
          SoftAP commissioning not currently supported
      disabled: true

    - label:
          "Step 3d: User should follow any TH-specific steps for putting the TH
          Commissionee device into commissioning mode and to complete the
          commissioning process using SoftAP."
      PICS: MCORE.DD.DISCOVERY_SOFTAP
      verification: |
          Out of Scope
          SoftAP commissioning not currently supported
      disabled: true
