# 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(Chip-tool) 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(Chip-tool) 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(Chip-tool) 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
