# 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:
    12.4.13. [TC-CNET-4.15] [Wi-Fi] NetworkIDNotFound returned in
    LastNetworkingStatus field validation [DUT-Server]

PICS:
    - CNET.S.F00

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

tests:
    - label:
          "TH sends  ArmFailSafe  command to the  DUT with
          the  ExpiryLengthSeco  nds field set to 900"
      verification: |
          ./chip-tool generalcommissioning arm-fail-safe 60 0 1 0

          Verify ArmFailSafeResponse on the TH Log:

          [1650383264.543046][44233:44238] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001
          [1650383264.543109][44233:44238] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Command 0x0000_0001
          [1650383264.543212][44233:44238] CHIP:TOO:   ArmFailSafeResponse: {
          [1650383264.543275][44233:44238] CHIP:TOO:     errorCode: 0
          [1650383264.543313][44233:44238] CHIP:TOO:     debugText:
          [1650383264.543348][44233:44238] CHIP:TOO:    }
          [1650383264.543402][44233:44238] CHIP:DMG: ICR moving to [AwaitingDe]
          [1650383264.543470][44233:44238] CHIP:EM: Sending Standalone Ack for MessageCounter:6293749 on exchange 65264i
      disabled: true

    - label:
          "TH sends  RemoveNetwork  Command to the  DUT with  NetworkID
          field  set to  PIXIT.CNET.WIFI_  2ND_ACCESSPOIN  T_SSID, which  does
          not match  the provisioned  network, and  Breadcrumb field  set to 1"
      PICS: CNET.S.C06.Rsp && CNET.S.C07.Tx
      verification: |
          ./chip-tool networkcommissioning remove-network hex:<your network id in hex> 1 0

          Below is an example:

           ./chip-tool networkcommissioning remove-network hex:47524C50726976617465 1 0

          Verify NetworkConfigResponse and its arguments on the TH Log:

          [1650383270.888700][44239:44244] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0031 Command=0x0000_0005
          [1650383270.888774][44239:44244] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Command 0x0000_0005
          [1650383270.888876][44239:44244] CHIP:TOO:   NetworkConfigResponse: {
          [1650383270.888952][44239:44244] CHIP:TOO:     networkingStatus: 3
          [1650383270.888992][44239:44244] CHIP:TOO:    }
          [1650383270.889044][44239:44244] CHIP:DMG: ICR moving to [AwaitingDe]
          [1650383270.889125][44239:44244] CHIP:EM: Sending Standalone Ack for MessageCounter:4715093 on exchange 59014i
      disabled: true

    - label:
          "TH sends connectNetwork Command to the DUT with NetworkID field set
          to PIXIT.CNET.WIFI_ 2ND_ACCESSPOIN T_SSID, which does not match the
          provisioned network, and Breadcrumb field set to 1"
      PICS: CNET.S.C06.Rsp && CNET.S.C07.Tx
      verification: |
          ./chip-tool networkcommissioning connect-network hex:<your network id in hex> 1 0

          Below is an example:

          ./chip-tool networkcommissioning connect-network hex:47524C50726976617465 1 0

          Verify ConnectNetworkResponse and its arguments on the TH Log:

          [1650383278.349428][44245:44250] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0031 Command=0x0000_0007
          [1650383278.349490][44245:44250] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Command 0x0000_0007
          [1650383278.349592][44245:44250] CHIP:TOO:   ConnectNetworkResponse: {
          [1650383278.349656][44245:44250] CHIP:TOO:     networkingStatus: 3
          [1650383278.349693][44245:44250] CHIP:TOO:     errorValue: 0
          [1650383278.349727][44245:44250] CHIP:TOO:    }
          [1650383278.349782][44245:44250] CHIP:DMG: ICR moving to [AwaitingDe]
          [1650383278.349847][44245:44250] CHIP:EM: Sending Standalone Ack for MessageCounter:11070796 on exchange 31080i
      disabled: true
