# 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.2. [TC-DD-3.2] Commissioning Flow - Non-concurrent [DUT - Commissionee]

PICS:
    - MCORE.ROLE.COMMISSIONEE

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

tests:
    - label: "Preconditions"
      verification: |
          1 - 5.5 - Commissioner is on a network. - The network can either be IP-based(Ethernet or WiFi) or Thread. Commissioner can either be a Matter device which is already on a network or the test harness connected to the network.
      disabled: true

    - label:
          "Commissioner and Commissionee discover each other and connect via the
          discovery mode applicable for the DUT."
      verification: |
          Verify in DUT(ALL-CLUSTER-APP) start BLE Advertising by specific DUT implementation

          Verify in TH (CHIP-TOOL) start commissioning process(need to obtain the Thread dataset first)

          ./chip-tool pairing ble-thread 1 hex:0e080000000000010000000300000f35060004001fffe0020811111111222222220708fd27e57b1b1e22d9051000112233445566778899aabbccddeeff030e4f70656e54687265616444656d6f01021234041061e1206d2c2b46e079eb775f41fc72190c0402a0fff8 20202021 3840
          ,,
      disabled: true

    - label:
          "Establish encryption keys with Password Authenticated Session
          Establishment on the commissioning channel"
      verification: |
          Verify in TH(CHIP-TOOL)

          CHIP:SC: Received PBKDF param response
      disabled: true

    - label:
          "Commissioner SHALL re-arm Fail-safe timer on Commissionee within 60s
          (the autonomously Fail-safe timer length set by Commissionee)"
      verification: |
          Verify in TH(CHIP-TOOL)

          CHIP:CTL: Arming failsafe (60 seconds)
      disabled: true

    - label:
          "Commissioner SHALL configure regulatory information in the
          Commissionee."
      PICS: MCORE.COM.WIRELESS
      verification: |
          Verify in TH(CHIP-TOOL)

          CHIP:CTL: Setting Regulatory Config
      disabled: true

    - label:
          "Commissioner requests operational CSR from Commissionee with
          OperationalCSRRequest command"
      verification: |
          Verify in TH(CHIP-TOOL)

          CHIP:CTL: Sending CSR request to 0xffffa4001730 device
          CHIP:DMG: ICR moving to [AddingComm]
          CHIP:DMG: ICR moving to [AddedComma]
          CHIP:IN: Prepared secure message 0xffffb9ba6db8 to 0x0000000000000001 (1)  of type 0x8 and protocolId (0, 1) on exchange 45042i with MessageCounter:12011388.
          CHIP:IN: Sending encrypted msg 0xffffb9ba6db8 with MessageCounter:12011388 to 0x0000000000000001 (1) at monotonic time: 304120 msec
          CHIP:DMG: ICR moving to [CommandSen]
          CHIP:CTL: Sent CSR request, waiting for the CSR
          CHIP:DMG: ICR moving to [AwaitingDe]
          CHIP:DL: HandlePlatformSpecificBLEEvent 16387
          CHIP:DL: Indication received, conn = 0xffffb0044210
          CHIP:DL: HandlePlatformSpecificBLEEvent 16389
          CHIP:DL: Indication received, conn = 0xffffb0044210
          CHIP:DL: HandlePlatformSpecificBLEEvent 16389
          CHIP:EM: Received message of type 0x9 with protocolId (0, 1) and MessageCounter:8508040 on exchange 45042i
          CHIP:EM: Found matching exchange: 45042i, Delegate: 0xffffb0040000
          CHIP:DMG: ICR moving to [ResponseRe]
          CHIP:DMG: InvokeResponseMessage =
          CHIP:DMG: {
          CHIP:DMG:        suppressResponse = false,
          CHIP:DMG:        InvokeResponseIBs =
          CHIP:DMG:        [
          CHIP:DMG:                InvokeResponseIB =
          CHIP:DMG:                {
          CHIP:DMG:                        CommandDataIB =
          CHIP:DMG:                        {
          CHIP:DMG:                                CommandPathIB =
          CHIP:DMG:                                {
          CHIP:DMG:                                        EndpointId = 0x0,
          CHIP:DMG:                                        ClusterId = 0x3e,
          CHIP:DMG:                                        CommandId = 0x5,
          CHIP:DMG:                                },
          CHIP:DMG:
          CHIP:DMG:                                CommandData =
          CHIP:DMG:                                {
          CHIP:DMG:                                        0x0 = [
          CHIP:DMG:                                                0x15, 0x30, 0x1, 0xcd, 0x30, 0x81, 0xca, 0x30, 0x70, 0x2, 0x1, 0x0, 0x30, 0xe, 0x31, 0xc, 0x30, 0xa, 0x6, 0x3, 0x55, 0x4, 0xa, 0xc, 0x3, 0x43, 0x53, 0x52, 0x30, 0x59, 0x30, 0x13, 0x6, 0x7, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x2, 0x1, 0x6, 0x8, 0x2a, 0x86
          CHIP:DMG:                                ]
          CHIP:DMG:                                        0x1 = [
          CHIP:DMG:                                                0xea, 0xd6, 0x96, 0x53, 0x4d, 0x46, 0x1d, 0xd6, 0xcc, 0x7f, 0x25, 0x50, 0x80, 0x4c, 0x2a, 0xe9, 0xc8, 0xb8, 0x1b, 0x34, 0xca, 0x98, 0x38, 0x42, 0x74, 0xc2, 0x13, 0xf4, 0x10, 0x4d, 0xa2, 0x44, 0x38, 0x98, 0x28, 0xb6, 0xb1, 0x94, 0x6b, 0xd, 0x29, 0x1b
          CHIP:DMG:                                ]
          CHIP:DMG:                                },
          CHIP:DMG:                        },
          CHIP:DMG:
          CHIP:DMG:                },
          CHIP:DMG:
          CHIP:DMG:        ],
          CHIP:DMG:
          CHIP:DMG:        InteractionModelRevision = 1
          CHIP:DMG: },
          CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0005
          CHIP:CTL: Received certificate signing request from the device
          CHIP:CTL: Getting certificate chain for the device from the issuer
          CHIP:CTL: Verifying Certificate Signing Request
          CHIP:CTL: Generating NOC
          CHIP:CTL: Providing certificate chain to the commissioner
          CHIP:CTL: Received callback from the CA for NOC Chain generation. Status ../../src/controller/ExampleOperationalCredentialsIssuer.cpp:225: Success
      disabled: true

    - label:
          "Commissioner configures operational credentials on DUT if not
          previously installed"
      verification: |
          Verify in TH(CHIP-TOOL)

          [1651218829.220063][3273:3278] CHIP:CTL: Sending root certificate to the device
          [1651218829.220201][3273:3278] CHIP:DMG: ICR moving to [AddingComm]
          [1651218829.222415][3273:3278] CHIP:DMG: ICR moving to [AddedComma]
          [1651218829.222549][3273:3278] CHIP:IN: Prepared secure message 0xffffb9ba6b98 to 0x0000000000000001 (1)  of type 0x8 and protocolId (0, 1) on exchange 45043i with MessageCounter:12011389.
          [1651218829.222616][3273:3278] CHIP:IN: Sending encrypted msg 0xffffb9ba6b98 with MessageCounter:12011389 to 0x0000000000000001 (1) at monotonic time: 305872 msec
          [1651218829.222746][3273:3278] CHIP:DMG: ICR moving to [CommandSen]
          [1651218829.222789][3273:3278] CHIP:CTL: Sent root certificate to the device
          [1651218829.223121][3273:3278] CHIP:DMG: ICR moving to [AwaitingDe]
          [1651218829.306861][3273:3278] CHIP:DL: HandlePlatformSpecificBLEEvent 16387
          [1651218829.404144][3273:3278] CHIP:DL: HandlePlatformSpecificBLEEvent 16387
          [1651218829.454121][3273:3276] CHIP:DL: Indication received, conn = 0xffffb0044210
          [1651218829.454352][3273:3278] CHIP:DL: HandlePlatformSpecificBLEEvent 16389
          CHIP:EM: Received message of type 0x9 with protocolId (0, 1) and MessageCounter:8508041 on exchange 45043i
          CHIP:EM: Found matching exchange: 45043i, Delegate: 0xffffa400def0
          CHIP:DMG: ICR moving to [ResponseRe]
          CHIP:DMG: InvokeResponseMessage =
          CHIP:DMG: {
          CHIP:DMG:        suppressResponse = false,
          CHIP:DMG:        InvokeResponseIBs =
          CHIP:DMG:        [
          CHIP:DMG:                InvokeResponseIB =
          CHIP:DMG:                {
          CHIP:DMG:                        CommandStatusIB =
          CHIP:DMG:                        {
          CHIP:DMG:                                CommandPathIB =
          CHIP:DMG:                                {
          CHIP:DMG:                                        EndpointId = 0x0,
          CHIP:DMG:                                        ClusterId = 0x3e,
          CHIP:DMG:                                        CommandId = 0xb,
          CHIP:DMG:                                },
          CHIP:DMG:
          CHIP:DMG:                                StatusIB =
          CHIP:DMG:                                {
          CHIP:DMG:                                        status = 0x0,
          CHIP:DMG:                                },
          CHIP:DMG:
          CHIP:DMG:                        },
          CHIP:DMG:
          CHIP:DMG:                },
          CHIP:DMG:
          CHIP:DMG:        ],
          CHIP:DMG:
          CHIP:DMG:        InteractionModelRevision = 1
          CHIP:DMG: },
          CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003E Command=0x0000_000B Status=0x0
          CHIP:CTL: Device confirmed that it has received the root certificate
      disabled: true

    - label:
          "Commissioner configures itself as administrator in ACL on DUT if
          needed"
      verification: |
          Verify in TH(CHIP-TOOL)

          [1651218829.457248][3273:3278] CHIP:CTL: Sending operational certificate chain to the device
          [1651218829.457372][3273:3278] CHIP:DMG: ICR moving to [AddingComm]
          [1651218829.460013][3273:3278] CHIP:DMG: ICR moving to [AddedComma]
          [1651218829.460273][3273:3278] CHIP:IN: Prepared secure message 0xffffb9ba7828 to 0x0000000000000001 (1)  of type 0x8 and protocolId (0, 1) on exchange 45044i with MessageCounter:12011390.
          [1651218829.460374][3273:3278] CHIP:IN: Sending encrypted msg 0xffffb9ba7828 with MessageCounter:12011390 to 0x0000000000000001 (1) at monotonic time: 306110 msec
          [1651218829.460602][3273:3278] CHIP:DMG: ICR moving to [CommandSen]
          [1651218829.460684][3273:3278] CHIP:CTL: Sent operational certificate to the device
          [1651218829.460778][3273:3278] CHIP:DMG: ICR moving to [AwaitingDe]
          [1651218829.550574][3273:3278] CHIP:DL: HandlePlatformSpecificBLEEvent 16387
          [1651218829.648065][3273:3278] CHIP:DL: HandlePlatformSpecificBLEEvent 16387
          [1651218829.745594][3273:3278] CHIP:DL: HandlePlatformSpecificBLEEvent 16387
          [1651218833.988087][3273:3276] CHIP:DL: Indication received, conn = 0xffffb0044210
          [1651218833.988336][3273:3278] CHIP:DL: HandlePlatformSpecificBLEEvent 16389
          [1651218833.988598][3273:3278] CHIP:EM: Received message of type 0x9 with protocolId (0, 1) and MessageCounter:8508042 on exchange 45044i
          CHIP:EM: Found matching exchange: 45044i, Delegate: 0xffffb0040000
          CHIP:DMG: ICR moving to [ResponseRe]
          CHIP:DMG: InvokeResponseMessage =
          CHIP:DMG: {
          CHIP:DMG:        suppressResponse = false,
          CHIP:DMG:        InvokeResponseIBs =
          CHIP:DMG:        [
          CHIP:DMG:                InvokeResponseIB =
          CHIP:DMG:                {
          CHIP:DMG:                        CommandDataIB =
          CHIP:DMG:                        {
          CHIP:DMG:                                CommandPathIB =
          CHIP:DMG:                                {
          CHIP:DMG:                                        EndpointId = 0x0,
          CHIP:DMG:                                        ClusterId = 0x3e,
          CHIP:DMG:                                        CommandId = 0x8,
          CHIP:DMG:                                },
          CHIP:DMG:
          CHIP:DMG:                                CommandData =
          CHIP:DMG:                                {
          CHIP:DMG:                                        0x0 = 0,
          CHIP:DMG:                                        0x1 = 1,
          CHIP:DMG:                                },
          CHIP:DMG:                        },
          CHIP:DMG:
          CHIP:DMG:                },
          CHIP:DMG:
          CHIP:DMG:        ],
          CHIP:DMG:
          CHIP:DMG:        InteractionModelRevision = 1
          CHIP:DMG: },
          CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008
          CHIP:CTL: Device returned status 0 on receiving the NOC
          CHIP:CTL: Operational credentials provisioned on device 0xffffa4001730
      disabled: true

    - label:
          "Commissioner configures operational network on DUT if DUT both
          supports and requires"
      verification: |
          Verify in TH(CHIP-TOOL)

          [1651218833.995054][3273:3278] CHIP:CTL: Adding thread network
          [1651218833.995176][3273:3278] CHIP:DMG: ICR moving to [AddingComm]
          [1651218833.995253][3273:3278] CHIP:DMG: ICR moving to [AddedComma]
          [1651218833.995431][3273:3278] CHIP:IN: Prepared secure message 0xffffb9ba7848 to 0x0000000000000001 (1)  of type 0x8 and protocolId (0, 1) on exchange 45045i with MessageCounter:12011391.
          [1651218833.995523][3273:3278] CHIP:IN: Sending encrypted msg 0xffffb9ba7848 with MessageCounter:12011391 to 0x0000000000000001 (1) at monotonic time: 310645 msec
          [1651218833.995723][3273:3278] CHIP:DMG: ICR moving to [CommandSen]
          [1651218833.995823][3273:3278] CHIP:DMG: ICR moving to [AwaitingDe]
          [1651218834.084548][3273:3278] CHIP:DL: HandlePlatformSpecificBLEEvent 16387
          [1651218834.134690][3273:3276] CHIP:DL: Indication received, conn = 0xffffb0044210
          [1651218834.134918][3273:3278] CHIP:DL: HandlePlatformSpecificBLEEvent 16389
          CHIP:EM: Received message of type 0x9 with protocolId (0, 1) and MessageCounter:8508043 on exchange 45045i
          CHIP:EM: Found matching exchange: 45045i, Delegate: 0xffffa400def0
          CHIP:DMG: ICR moving to [ResponseRe]
          CHIP:DMG: InvokeResponseMessage =
          CHIP:DMG: {
          CHIP:DMG:        suppressResponse = false,
          CHIP:DMG:        InvokeResponseIBs =
          CHIP:DMG:        [
          CHIP:DMG:                InvokeResponseIB =
          CHIP:DMG:                {
          CHIP:DMG:                        CommandDataIB =
          CHIP:DMG:                        {
          CHIP:DMG:                                CommandPathIB =
          CHIP:DMG:                                {
          CHIP:DMG:                                        EndpointId = 0x0,
          CHIP:DMG:                                        ClusterId = 0x31,
          CHIP:DMG:                                        CommandId = 0x5,
          CHIP:DMG:                                },
          CHIP:DMG:
          CHIP:DMG:                                CommandData =
          CHIP:DMG:                                {
          CHIP:DMG:                                        0x0 = 0,
          CHIP:DMG:                                        0x1 = "",
          CHIP:DMG:                                },
          CHIP:DMG:                        },
          CHIP:DMG:
          CHIP:DMG:                },
          CHIP:DMG:
          CHIP:DMG:        ],
          CHIP:DMG:
          CHIP:DMG:        InteractionModelRevision = 1
          CHIP:DMG: },
          CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0031 Command=0x0000_0005
          CHIP:CTL: Received NetworkConfig response
      disabled: true

    - label:
          "Commissioner instructs Commissionee to connect to operational network
          if not already connected"
      verification: |
          Verify in TH(CHIP-TOOL)

          [1651218834.137891][3273:3278] CHIP:CTL: Enabling thread network
          [1651218834.138014][3273:3278] CHIP:DMG: ICR moving to [AddingComm]
          [1651218834.138086][3273:3278] CHIP:DMG: ICR moving to [AddedComma]
          [1651218834.138236][3273:3278] CHIP:IN: Prepared secure message 0xffffb9ba7938 to 0x0000000000000001 (1)  of type 0x8 and protocolId (0, 1) on exchange 45046i with MessageCounter:12011392.
          [1651218834.138325][3273:3278] CHIP:IN: Sending encrypted msg 0xffffb9ba7938 with MessageCounter:12011392 to 0x0000000000000001 (1) at monotonic time: 310788 msec
          [1651218834.138522][3273:3278] CHIP:DMG: ICR moving to [CommandSen]
          [1651218834.138628][3273:3278] CHIP:DMG: ICR moving to [AwaitingDe]
          [1651218834.231701][3273:3278] CHIP:DL: HandlePlatformSpecificBLEEvent 16387
          [1651218834.426948][3273:3276] CHIP:DL: Indication received, conn = 0xffffb0044210
          [1651218834.427186][3273:3278] CHIP:DL: HandlePlatformSpecificBLEEvent 16389
          [1651218834.427443][3273:3278] CHIP:EM: Received message of type 0x9 with protocolId (0, 1) and MessageCounter:8508044 on exchange 45046i
          CHIP:EM: Found matching exchange: 45046i, Delegate: 0xffffb0040000
          CHIP:DMG: ICR moving to [ResponseRe]
          CHIP:DMG: InvokeResponseMessage =
          CHIP:DMG: {
          CHIP:DMG:        suppressResponse = false,
          CHIP:DMG:        InvokeResponseIBs =
          CHIP:DMG:        [
          CHIP:DMG:                InvokeResponseIB =
          CHIP:DMG:                {
          CHIP:DMG:                        CommandDataIB =
          CHIP:DMG:                        {
          CHIP:DMG:                                CommandPathIB =
          CHIP:DMG:                                {
          CHIP:DMG:                                        EndpointId = 0x0,
          CHIP:DMG:                                        ClusterId = 0x31,
          CHIP:DMG:                                        CommandId = 0x7,
          CHIP:DMG:                                },
          CHIP:DMG:
          CHIP:DMG:                                CommandData =
          CHIP:DMG:                                {
          CHIP:DMG:                                        0x0 = 0,
          CHIP:DMG:                                        0x1 = "",
          CHIP:DMG:                                        0x2 = 0,
          CHIP:DMG:                                },
          CHIP:DMG:                        },
          CHIP:DMG:
          CHIP:DMG:                },
          CHIP:DMG:
          CHIP:DMG:        ],
          CHIP:DMG:
          CHIP:DMG:        InteractionModelRevision = 1
          CHIP:DMG: },
          CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0031 Command=0x0000_0007
          CHIP:CTL: Received ConnectNetwork response
      disabled: true

    - label:
          "Commissioning channel between the Commissioner and Commissionee is
          terminated."
      verification: |
          1. Terminate the connection between the Commissionee and the Commissioner. (i.e. remove network access or terminate commissioning process)
      disabled: true

    - label: "Commissioner starts discovery of DUT using Operational Discovery"
      verification: |
          Verify in TH(CHIP-TOOL)

          CHIP:DL: Avahi resolve found
          CHIP:DIS: Node ID resolved for 0x0000000000000001
          CHIP:DIS:     Addr 0: [fd11:22::9d96:8fcf:10cf:799e]:5540
          CHIP:CTL: OperationalDiscoveryComplete for device ID 0x0000000000000001
      disabled: true

    - label:
          "Commissioner opens a CASE session with DUT over operational network"
      verification: |
          Verify in TH(CHIP-TOOL)

          CHIP:SC: Sent Sigma1 msg
          CHIP:CTL: Address resolved for node: 0x0000000000000001
          CHIP:EM: Received message of type 0x31 with protocolId (0, 0) and MessageCounter:1066460336 on exchange 45047i
          CHIP:EM: Found matching exchange: 45047i, Delegate: 0xffffa400f7f8
          CHIP:EM: Rxd Ack; Removing MessageCounter:2352378411 from Retrans Table on exchange 45047i
          CHIP:EM: Removed CHIP MessageCounter:2352378411 from RetransTable on exchange 45047i
          CHIP:SC: Received Sigma2 msg
          CHIP:SC: Peer assigned session session ID 2
          CHIP:SC: The device does not support GetClock_RealTimeMS() API. This will eventually result in CASE session setup failures.
          CHIP:IN: Generating compressed fabric ID using uncompressed fabric ID 0x0000000000000001 and root pubkey
          CHIP:IN: 0x04, 0x6e, 0x3e, 0x58, 0x9d, 0x08, 0xd6, 0xae,
          CHIP:IN: 0xe9, 0xff, 0x9b, 0x8f, 0xba, 0x6f, 0x57, 0x73,
          CHIP:IN: 0x21, 0xc4, 0xe2, 0x7b, 0x09, 0xe4, 0x24, 0x7f,
          CHIP:IN: 0x55, 0x44, 0x3b, 0xf2, 0x7c, 0x13, 0x45, 0x3b,
          CHIP:IN: 0x82, 0xa8, 0x42, 0x96, 0xb4, 0x36, 0x78, 0x20,
          CHIP:IN: 0xa1, 0x37, 0x69, 0xf0, 0x20, 0xc9, 0x20, 0x7e,
          CHIP:IN: 0x66, 0x45, 0x84, 0x53, 0x1b, 0x3e, 0xd2, 0x61,
          CHIP:IN: 0xb6, 0x89, 0x27, 0xfd, 0xe8, 0x23, 0x69, 0x6d,
          CHIP:IN: 0x93,
          CHIP:IN: Generated compressed fabric ID
          CHIP:IN: 0xa3, 0x54, 0xab, 0x2a, 0xa2, 0x1f, 0x8e, 0x48,
          CHIP:SC: Found MRP parameters in the message
          CHIP:SC: Sending Sigma3
          CHIP:EM: Piggybacking Ack for MessageCounter:1066460336 on exchange: 45047i
          CHIP:IN: Prepared unauthenticated message 0xaaaad7ce1bf8 to 0x0000000000000000 (0)  of type 0x32 and protocolId (0, 0) on exchange 45047i with MessageCounter:2352378412.
          CHIP:IN: Sending unauthenticated msg 0xaaaad7ce1bf8 with MessageCounter:2352378412 to 0x0000000000000000 at monotonic time: 315803 msec
          CHIP:SC: Sent Sigma3 msg
          CHIP:EM: Received message of type 0x40 with protocolId (0, 0) and MessageCounter:1066460337 on exchange 45047i
          CHIP:EM: Found matching exchange: 45047i, Delegate: 0xffffa400f7f8
          CHIP:EM: Rxd Ack; Removing MessageCounter:2352378412 from Retrans Table on exchange 45047i
          CHIP:EM: Removed CHIP MessageCounter:2352378412 from RetransTable on exchange 45047i
          CHIP:SC: Success status report received. Session was established
          CHIP:IN: New secure session created for device 0x0000000000000001, LSID:2 PSID:2!
      disabled: true

    - label: "Commissioner sends CommissioningComplete command"
      verification: |
          Verify in TH(CHIP-TOOL)

          CHIP:CTL: Received CommissioningComplete response
          CHIP:CTL: Rendezvous cleanup
          CHIP:TOO: Device commissioning completed with success
      disabled: true
