# 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:
    4.1.19. [TC-CADMIN-1.19] max number of Commissioned Fabrics and
    SupportedFabrics rollover using    ECM [DUT - Commissionee]

PICS:
    - CADMIN.S

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

tests:
    - label: "Precondition"
      verification: |
          Reset Devices to factory defaults
      disabled: true

    - label: "TH_CR1 starts a commissioning process with DUT_CE"
      PICS: CADMIN.S
      verification: |
          "1. Provision the device using TH_CR1 -chip tool(use above instructions) ,"

          ./chip-tool operationalcredentials read supported-fabrics 1 0

          verify the supported fabric value in  TH_CR1 (chip-tool) Log

          [1673255944.863014][1855:1857] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0002 DataVersion: 1416179233
          [1673255944.866488][1855:1857] CHIP:TOO:   SupportedFabrics: 16
          [1673255944.866687][1855:1857] CHIP:EM: <<< [E:54030i M:262581331 (Ack:252819622)] (S) Msg TX to 1:0000000000000001 [2933] --- Type 0000:10 (SecureChannel:StandaloneAck)
          [1673255944.866740][1855:1857] CHIP:IN: (S) Sending msg 262581331 on secure session with LSID: 35076
          [1673255944.866870][1855:1857] CHIP:EM: Flushed pending ack for MessageCounter:252819622 on exchange 54030i
      disabled: true

    - label:
          "TH_CR1 opens a commissioning window on DUT_CE using a commissioning
          timeout of PIXIT.CADMIN.CwDuration seconds using ECM"
      PICS: CADMIN.S.C00.Rsp
      verification: |
          On TH_CR1 (chip tool), open commissioning window using ECM

          ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840

          Verify Manual pairing code on TH_CR1 (chip-tool) Log

          [1635925713.966786][9695:9700] CHIP:SC: Success status report received. Session was established
          [1635925713.966839][9695:9700] CHIP:IN: New secure session created for device 0x0000000000000001, key 33!!
          [1635925713.966938][9695:9700] CHIP:CTL: OpenCommissioningWindow for device ID 1
          [1635925713.972601][9695:9700] CHIP:DMG: ICR moving to [AddingComm]
          [1635925713.972705][9695:9700] CHIP:DMG: ICR moving to [AddedComma]
          [1635925713.972815][9695:9700] CHIP:IN: Prepared encrypted message 0xaaaad9b57d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 31056i with MessageCounter:0.
          [1635925713.972876][9695:9700] CHIP:IN: Sending encrypted msg 0xaaaad9b57d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 13449459 msec
          [1635925713.973006][9695:9700] CHIP:DMG: ICR moving to [CommandSen]
          [1635925713.973061][9695:9700] CHIP:CTL: Manual pairing code: [36217551633]
          [1635925713.973120][9695:9700] CHIP:CTL: SetupQRCode: [MT:00000CQM00A7F87ZT10]
          [1635925713.973178][9695:9700] CHIP:EM: Sending Standalone Ack for MessageCounter:1964916542 on exchange 31055i
      disabled: true

    - label: "THn starts a commissioning process with DUT_CE"
      PICS: CADMIN.S
      verification: |
          On TH_CR1+1 controller using chip tool connect to the accessory


          ./chip-tool pairing code 2 36217551633  --commissioner-name beta

          Verify you got below message on TH_CR1+1(chip-tool) log
          Device commissioning completed with success
      disabled: true

    - label:
          "Repeat Step 3 and Step 4 an additional (SupportedFabrics - 2) times
          to reach an index value of SupportedFabrics on DUT_CE"
      PICS: CADMIN.S.C00.Rsp
      verification: |
          Repeat step 3 until  CommissionedFabrics=SupportedFabrics  (Supported fabrics value obtained in the step 1)

          Use the following command to verify the currentcommissioned fabric (Output number may vary depends on the number successful commissioning )

          ./chip-tool operationalcredentials read commissioned-fabrics 1 0

          [1660907933.677983][33780:33785] CHIP:TOO:   CommissionedFabrics: 16
      disabled: true

    - label:
          "THn starts a commissioning process and opens a commissioning window
          with DUT_CE"
      PICS: CADMIN.S
      verification: |
          On THnth controller using chip tool connect to the accessory

          ./chip-tool pairing code 6 36217551633 --commissioner-name 4

          Verify DUT_CE responds with NOCResponse with a StatusCode of 0x05 on THn (chip-tool) log

          CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008
          [1649756670.402192][10794:10799] CHIP:CTL: Device returned status 5 on receiving the NOC
          [1649756670.402221][10794:10799] CHIP:CTL: Add NOC failed with error ../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1110: CHIP Error 0x0000000B: No memory
          [1649756670.402241][10794:10799] CHIP:CTL: Failed to perform commissioning step 13
      disabled: true

    - label: "TH_CR1 removes FabricIndex1"
      PICS: OPCREDS.S.C0a.Rsp
      verification: |
          on TH_CR1 using chip tool, remove fabric with FabricIndex=1

          ./chip-tool operationalcredentials remove-fabric 1 1 0

          CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008
          CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0008
          CHIP:TOO:   NOCResponse: {
          CHIP:TOO:     statusCode: 0
          CHIP:TOO:     fabricIndex: 1
          CHIP:TOO:    }
          CHIP:DMG: ICR moving to [AwaitingDe]

          Verify CommissionedFabrics=SupportedFabrics-1 on  TH_CR1(chip-tool) log

          ./chip-tool operationalcredentials read commissioned-fabrics 2 0 --commissioner-name beta

          [1660907933.677983][33780:33785] CHIP:TOO:   CommissionedFabrics: 15
      disabled: true
