# 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 Information"
    endpoint: 0

tests:
    - label: "Start the commissioning process of TH1 on DUT"
      verification: |

      disabled: true

    - label:
          "During PASE Session, TH1 sends CommissioningComplete command to the
          DUT"
      PICS: CGEN.S.C04.Rsp && CGEN.S.C05.Tx
      verification: |
          Out of scope for V1.0
      disabled: true

    - label: "Complete the Commission for TH1 and DUT"
      verification: |

      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(chip-tool), Verify that DUT sends SetRegulatoryConfigResponse command to TH1 with field ErrorCode as "ValueOutsideRange"(1) and DebugText argument is of type string with max length 512 or empty a "string" value
          [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(chip-tool), Verify that DUT sends SetRegulatoryConfigResponse command to TH1 with field With ErrorCode as "NoFailSafe"(3) and DebugText as a "string" value
           based on Spec Default value empty is exceptable for debugText
          [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
