# 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"
      PICS: MCORE.DD.FETCH_DCL
      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"
      PICS: MCORE.DD.FETCH_DCL
      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
