# 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.11. [TC-CNET-4.13] [Wi-Fi] Verification for ReorderNetwork command
    [DUT-Server]

PICS:
    - CNET.S.F00

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

tests:
    - label: "Commission TH and DUT over BLE to setup the Wi-Fi"
      verification: |

      disabled: true

    - label:
          "The cluster Identifier 49 (0x0031) is present in the ServerList
          attribute"
      verification: |
          ./chip-tool descriptor read server-list 1 0

          Verify the "server-list" on the TH(Chip-tool) log

          [1653474860.462391][29901:29906] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 1237231415
          [1653474860.462487][29901:29906] CHIP:TOO:   server list: 25 entries
          [1653474860.462524][29901:29906] CHIP:TOO:     [1]: 3
          [1653474860.462549][29901:29906] CHIP:TOO:     [2]: 4
          [1653474860.462574][29901:29906] CHIP:TOO:     [3]: 29
          [1653474860.462598][29901:29906] CHIP:TOO:     [4]: 30
          [1653474860.462622][29901:29906] CHIP:TOO:     [5]: 31
          [1653474860.462646][29901:29906] CHIP:TOO:     [6]: 40
          [1653474860.462670][29901:29906] CHIP:TOO:     [7]: 42
          [1653474860.462693][29901:29906] CHIP:TOO:     [8]: 43
          [1653474860.462717][29901:29906] CHIP:TOO:     [9]: 44
          [1653474860.462741][29901:29906] CHIP:TOO:     [10]: 45
          [1653474860.462765][29901:29906] CHIP:TOO:     [11]: 46
          [1653474860.462788][29901:29906] CHIP:TOO:     [12]: 48
          [1653474860.462812][29901:29906] CHIP:TOO:     [13]: 49
          [1653474860.462836][29901:29906] CHIP:TOO:     [14]: 50
          [1653474860.462859][29901:29906] CHIP:TOO:     [15]: 51
          [1653474860.462883][29901:29906] CHIP:TOO:     [16]: 52
          [1653474860.462906][29901:29906] CHIP:TOO:     [17]: 53
          [1653474860.462930][29901:29906] CHIP:TOO:     [18]: 54
          [1653474860.462954][29901:29906] CHIP:TOO:     [19]: 55
          [1653474860.462977][29901:29906] CHIP:TOO:     [20]: 60
          [1653474860.463001][29901:29906] CHIP:TOO:     [21]: 62
          [1653474860.463024][29901:29906] CHIP:TOO:     [22]: 63
          [1653474860.463048][29901:29906] CHIP:TOO:     [23]: 64
          [1653474860.463071][29901:29906] CHIP:TOO:     [24]: 65
          [1653474860.463095][29901:29906] CHIP:TOO:     [25]: 1029
          [1653474860.463296][29901:29906] CHIP:EM: Sending Standalone Ack for MessageCounter:10703464 on exchange 2435i
      disabled: true

    - label: "The FeatureMap attribute value is 1"
      verification: |
          ./chip-tool networkcommissioning read feature-map 1 0

          Verify the "feature-map" on the TH(Chip-tool) log

          [1653474932.055513][29920:29925] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_FFFC DataVersion: 1600858167
          [1653474932.055578][29920:29925] CHIP:TOO:   FeatureMap: 1
          [1653474932.055675][29920:29925] CHIP:EM: Sending Standalone Ack for MessageCounter:1494059 on exchange 5482i
      disabled: true

    - label:
          "MaxNetworks attribute value is at least 4 which is saved as
          MaxNetworksValue for future use"
      verification: |
          The test case is not verifiable. As MaxNetworks value is 1 but expected is 4

          ./chip-tool networkcommissioning read max-networks 1 0

          [1653476960.303444][30164:30169] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_0000 DataVersion: 1600858167
          [1653476960.303531][30164:30169] CHIP:TOO:   MaxNetworks: 1
          [1653476960.303641][30164:30169] CHIP:EM: Sending Standalone Ack for MessageCounter:2083922 on exchange 45120i
      disabled: true

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

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH reads  Networks  attribute from the  DUT and saves the  number of
          entries  as NumNetworks"
      PICS: CNET.S.A0001
      verification: |
          ./chip-tool network-commissioning read networks 1 0

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH calculates the  number of  remaining  network slots
          as  MaxNetworksVal  ue -  NumNetworks  and saves
          as  RemainingNetwor  kSlots"
      verification: |
          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH1 sends AddOrUpdateWiFiNetwork command to the DUT with SSID
          argument value as Userwifi_ssid2, Credentials argument value as
          Userwifi_Credentials and Breadcrumb argument value as 1"
      verification: |
          ./chip-tool networkcommissioning add-or-update-wi-fi-network hex:47524C50726976617465 grlprivate092010 1 0 --Breadcrumb 1

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH calculates the midpoint of the network list as floor((MaxNetwor
          ksValue + 1)/2) and saves as Midpoint"
      verification: |
          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

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


          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH sends  AddOrUpdateWiFi  Network  command to the  DUT. This
          step  should be  repeated  RemainingNetwor  kSlots times
          using  DIFFERENT SSID  and credential  values and the  Breadcrumb
          field  set to 1. Note that  these credentials  are NOT required  to be
          connectable."
      PICS: CNET.S.C02.Rsp && CNET.S.C05.Tx
      verification: |
          ./chip-tool networkcommissioning add-or-update-wi-fi-network hex:63686970736574757035 matter123 1 0 --Breadcrumb 1

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH reads  Networks  attribute from the  DUT and saves the  list
          as  OriginalNetworkL  ist"
      PICS: CNET.S.A0001
      verification: |
          ./chip-tool network-commissioning read networks 1 0

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH sends ReorderNetwo rk Command to the DUT with the following
          fields: 1. NetworkID is PIXIT.CNET .WIFI_1ST_ ACCESSPOI NT_SSID 2.
          NetworkIn dex is MaxNetwo rksValue 3. Breadcrum b is 2"
      PICS: CNET.S.C08.Rsp && CNET.S.C05.Tx
      verification: |
          ./chip-tool network-commissioning read networks 1 0

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH reads Breadcumb attribute from the General Commissioning Cluster"
      verification: |
          ./chip-tool generalcommissioning read breadcrumb 1 0

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH sends  ReorderNetwo  rk Command  to the DUT  with
          the  following  fields:  1. NetworkID  is a  NetworkID  value
          NOT  present in  OriginalNe  tworkList  2.  NetworkIn  dex
          is  Midpoint  3.  Breadcrum  b is 2"
      PICS: CNET.S.C08.Rsp && CNET.S.C05.Tx
      verification: |
          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH reads Breadcumb attribute from the General Commissioning Cluster"
      verification: |
          ./chip-tool generalcommissioning read breadcrumb 1 0

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH sends ReorderNetwo rk Command to the DUT with the following
          fields: 1. NetworkID is PIXIT.CNET .WIFI_1ST_ ACCESSPOI NT_SSID 2.
          NetworkIn dex is Midpoint 3. Breadcrum b is 2"
      PICS: CNET.S.C08.Rsp && CNET.S.C05.Tx
      verification: |
          ./chip-tool  networkcommissioning reorder-network  hex:47524C50726976617465 1 0 --Breadcrumb 1

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH reads  Breadcumb  attribute from
          the  General  Commissioning  Cluster"
      verification: |
          ./chip-tool generalcommissioning read breadcrumb 1 0

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label: "TH reads  Networks  attribute list from  the DUT"
      PICS: CNET.S.A0001
      verification: |
          ./chip-tool network-commissioning read networks 1 0

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

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

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label: "TH reads  Networks  attribute list from  the DUT"
      PICS: CNET.S.A0001
      verification: |
          ./chip-tool network-commissioning read networks 1 0

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

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


          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH sends  AddOrUpdateWiFi  Network  command to the  DUT. This
          step  should be  repeated  RemainingNetwor  kSlots times
          using  DIFFERENT SSID  and credential  values and  Breadcrumb
          field  set to 1. Note that  these credentials  are NOT required  to be
          connectable."
      PICS: CNET.S.C02.Rsp && CNET.S.C05.Tx
      verification: |
          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label:
          "TH sends  ReorderNetwo  rk Command  to the DUT  with
          the  following  fields:  1.
          NetworkID  is  PIXIT.CNET  .WIFI_1ST_  ACCESSPOI  NT_SSID  2.  NetworkIn  dex
          is  Midpoint  3.  Breadcrum  b is 2"
      PICS: CNET.S.C08.Rsp && CNET.S.C05.Tx
      verification: |
          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label: "TH sends the CommissioningCo mplete command to the DUT"
      verification: |
          ./chip-tool generalcommissioning CommissioningComplete 1 0

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

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

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true

    - label: "TH reads  Networks  attribute list from  the DUT"
      PICS: CNET.S.A0001
      verification: |
          ./chip-tool network-commissioning read networks 1 0

          The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4
          ( Pre-Condition)
      disabled: true
