# 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]

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
