# 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.10. [TC-DD-3.10] Commissioning Flow - Custom Flow = 2 [DUT -
    Commissioner]

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

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

tests:
    - label:
          "DUT receives Onboarding Payload from the TH with Custom Flow field
          set to value 2"
      verification: |
          1. Parse the TH Onboarding Payload using the DUT commissioner

          Example using chip-tool as a DUT:
          $ ./chip-tool payload parse-setup-payload MT:-24J029Q00KA0648G00
          [1657230447725] [31078:16782733] CHIP: [SPL] Parsing base38Representation: MT:-24J029Q00KA0648G00
          [1657230447725] [31078:16782733] CHIP: [SPL] Version:       0
          [1657230447725] [31078:16782733] CHIP: [SPL] VendorID:      65521
          [1657230447725] [31078:16782733] CHIP: [SPL] ProductID:     32769
          [1657230447725] [31078:16782733] CHIP: [SPL] Custom flow:   2    (CUSTOM)
          [1657230447725] [31078:16782733] CHIP: [SPL] Capabilities:  0x04 (On IP network)
          [1657230447725] [31078:16782733] CHIP: [SPL] Discriminator: 3840
          [1657230447725] [31078:16782733] CHIP: [SPL] Passcode:      20202021

          2. Verify that the Commissioning Flow is set to 2 (Custom Flow)
      disabled: true

    - label:
          "DUT fetches commissioning data from DCL using VID and PID from
          Onboarding Payload"
      verification: |
          1. Observe the TH"s DCL on the DUT
      disabled: true

    - label:
          "Using the instructions located at the CommissioningCustomFlowURL from
          the DCL, DUT guides the user in next steps to prepare the commissionee
          (TH) for commissioning"
      verification: |
          1. Follow instructions for commissioning using the URL contained in the DCL
      disabled: true

    - label: "DUT commissions TH"
      verification: |
          $  ./chip-tool pairing code 1 MT:-24J029Q00KA0648G00

          [1657578523795] [9610:351965] CHIP: [CTL] Successfully finished commissioning step "Cleanup"
          [1657578523795] [9610:351965] CHIP: [TOO] Device commissioning completed with success
      disabled: true
