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

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
