# 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.13. [TC-DD-1.13] Onboarding Payload Verification - Custom Flow = 1 [DUT
    - Commissionee]

PICS:
    - MCORE.ROLE.COMMISSIONEE
    - MCORE.DD.QR
    - MCORE.DD.USER_INTENT_COMM_FLOW

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

tests:
    - label: "Power on the DUT device."
      verification: |
          1. Verify DUT is NOT advertising in commissioning mode. On DUT, the DUT should not show up

          $  ./chip-tool discover commissionables
      disabled: true

    - label: "Scan the DUTs QR code from the previous step using the TH."
      verification: |
          1. Run DUT. Example for DUT=all-clusters app
          $ ./out/all-clusters-app/chip-all-clusters-app --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --custom-flow 0 --capabilities 4 --discriminator 3840 --passcode 20202021

          2. Parse onboarding payload using TH=chip-tool
          $  ./chip-tool payload parse-setup-payload MT:-24J0AFN00KA0648G00
          [1651193251086] [15494:447566] CHIP: [SPL] Parsing base38Representation: MT:-24J0AFN00KA0648G00
          [1651193251087] [15494:447566] CHIP: [SPL] CommissioningFlow: 1
          [1651193251087] [15494:447566] CHIP: [SPL] VendorID: 65521
          [1651193251087] [15494:447566] CHIP: [SPL] Version: 0
          [1651193251087] [15494:447566] CHIP: [SPL] ProductID: 32769
          [1651193251087] [15494:447566] CHIP: [SPL] Discriminator: 3840
          [1651193251087] [15494:447566] CHIP: [SPL] SetUpPINCode: 20202021
          [1651193251087] [15494:447566] CHIP: [SPL] RendezvousInformation: 4
      disabled: true

    - label:
          "Verify that the TH presents the user with a pairing hint in the
          CommissioningModeInitialStepsHint field of the DCL. Verify that the
          CommissioningCustomFlow field is set to a value = 1"
      verification: |
          1. Verify CommissioningCustomFlow=1
          2. Verify CommissioningModeInitialStepsHint contains a valid, non-zero integer
      disabled: true

    - label:
          "Follow any steps from the resources provided by the pairing hint for
          putting the DUT Commissionee into commissioning mode"
      verification: |
          1. Follow vendor-specific steps from the pairing hint to put DUT into commissioning mode

          2. Verify DUT is advertising in commissioning mode. On DUT,

          $  ./chip-tool discover commissionables
          [1651192893436] [15304:442604] CHIP: [DL] Mdns: OnNewAddress interface: 24 ip:fe80::dea6:32ff:fe8d:6e32
          [1651192893436] [15304:442604] CHIP: [DIS]         Vendor ID: 65521
          [1651192893436] [15304:442604] CHIP: [DIS]         Product ID: 32769
          [1651192893436] [15304:442604] CHIP: [DIS]         Long Discriminator: 3840
          [1651192893436] [15304:442604] CHIP: [DIS]         Pairing Hint: 33
          [1651192893436] [15304:442604] CHIP: [DIS]         Hostname: DCA6328D6E320000        [1651192893436] [15304:442604] CHIP: [DIS]         Instance Name: 914762134DA8E7D1
          [1651192893436] [15304:442604] CHIP: [DIS]         IP Address #1: fe80::dea6:32ff:fe8d:6e32
          [1651192893436] [15304:442604] CHIP: [DIS]         Port: 5540
          [1651192893436] [15304:442604] CHIP: [DIS]         Commissioning Mode: 1
          [1651192893436] [15304:442604] CHIP: [DIS]         Mrp Interval idle: 5000 ms
          [1651192893436] [15304:442604] CHIP: [DIS]         Mrp Interval active: 300 ms
      disabled: true
