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

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

tests:
    - label:
          "TH reads Network attribute from the DUT * TH saves the single entrys
          NetworkID value as 'userwifi_ssid' value for the future use"
      verification: |
          ./chip-tool networkcommissioning read networks 1 0

          Verify on the TH Log:

          [1645772651.445097][3856:3861] CHIP:DMG:         SuppressResponse = true,
          [1645772651.445149][3856:3861] CHIP:DMG:         InteractionModelRevision = 1
          [1645772651.445209][3856:3861] CHIP:DMG: }
          [1645772651.445754][3856:3861] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_0001DataVersion: 92121563
          [1645772651.445875][3856:3861] CHIP:TOO:   Networks: 1 entries
          [1645772651.446057][3856:3861] CHIP:TOO:     [1]: {
          [1645772651.446120][3856:3861] CHIP:TOO:       NetworkID: 47524C50726976617465
          [1650389742.394958][9809:9814] CHIP:TOO:       Connected: TRUE
          [1645772651.446228][3856:3861] CHIP:TOO:      }
          [1645772651.446431][3856:3861] CHIP:EM: Sending Standalone Ack for MessageCounter:12695576 on exchange 11133i
      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 60 0 1 0

          Verify 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:47524C50726976617465 1 0

          Verify 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:47524C50726976617465 1 0

          Verify 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
