# 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] [WiFi] NetworkIDNotFound value as
    LastNetworkingStatus argument validation [DUT-Server]

PICS:
    - CNET.S.F00

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

tests:
    - label: "Preconditions"
      verification: |
          1. Factory Reset the DUT
          2. Commission TH and DUT to setup the Thread
          3. The cluster Identifier 49 (0x0031) is present in the ServerList attribute
          4. The FeatureMap attribute value is 1
          5. MaxNetworks attribute value is at least 1 which is saved as MaxNetworksValue for future use
      disabled: true

    - label:
          "TH sends ArmFailSafe command to the DUT with the ExpiryLengthSeconds
          field set to 900"
      verification: |
          ./chip-tool generalcommissioning arm-fail-safe 900 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.C04.Rsp && CNET.S.C05.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
