# 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 Information"
    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  OriginalNetworkList"
      PICS: CNET.S.A0001
      verification: |
          ./chip-tool networkcommissioning 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
