# 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:
    93.2.3. [TC-CGEN-2.4] Verification For CommissioningError on response
    message [DUT - Server]

PICS:
    - CGEN.S

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

tests:
    - label: "Start the commissioning process of TH1 on DUT"
      verification: |
          verification step to be updated.
      disabled: true

    - label:
          "During PASE Session, TH1 sends CommissioningComplete command to the
          DUT"
      PICS: CGEN.S.C04.Rsp && CGEN.S.C05.Tx
      verification: |
          Not testable as the execution is in PASE session
      disabled: true

    - label: "Complete the Commission for TH1 and DUT"
      verification: |
          verification step to be updated.
      disabled: true

    - label:
          "TH1 sends SetRegulatoryConfig command to the DUT with
          NewRegulatoryConfig data value as greater than 3, Breadcrumb as 0 and
          CountryCode value as PIXIT.CGEN.CountryCode"
      PICS: CGEN.S.C02.Rsp && CGEN.S.C03.Tx
      verification: |
          ./chip-tool generalcommissioning set-regulatory-config 4 new 0 1 0

          On TH, Verify that DUT sends SetRegulatoryConfigResponse command to TH1 with field ErrorCode as 1 and DebugText as string

          [1653996382.940789][7220:7225] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0003
          [1653996382.940900][7220:7225] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Command 0x0000_0003
          [1653996382.941033][7220:7225] CHIP:TOO:   SetRegulatoryConfigResponse: {
          [1653996382.941119][7220:7225] CHIP:TOO:     errorCode: 1
          [1653996382.941171][7220:7225] CHIP:TOO:     debugText: new
          [1653996382.941220][7220:7225] CHIP:TOO:    }
          [1653996382.941317][7220:7225] CHIP:DMG: ICR moving to [AwaitingDe]
      disabled: true

    - label:
          "After Fail-Safe timer expires, TH1 Sends the CommissioningComplete
          command to the DUT"
      PICS: CGEN.S.C00.Rsp && CGEN.S.C01.Tx
      verification: |
          ./chip-tool generalcommissioning commissioning-complete 1 0

          On TH, Verify that DUT sends SetRegulatoryConfigResponse command to TH1 with field ErrorCode as 3 and DebugText as string or empty

          [1653996461.207051][7229:7234] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0005
          [1653996461.207140][7229:7234] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Command 0x0000_0005
          [1653996461.207228][7229:7234] CHIP:TOO:   CommissioningCompleteResponse: {
          [1653996461.207281][7229:7234] CHIP:TOO:     errorCode: 3
          [1653996461.207319][7229:7234] CHIP:TOO:     debugText:
          [1653996461.207357][7229:7234] CHIP:TOO:    }
          [1653996461.207416][7229:7234] CHIP:DMG: ICR moving to [AwaitingDe]
      disabled: true
