# 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: 3.1.3. [TC-BR-3] Changing name and state of a bridged device

PICS:
    - MCORE.BRIDGE

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

tests:
    - label:
          "Get the name of a bridged device: Read the NodeLabel attribute of the
          Bridged Device Basic Information cluster on the applicable endpoint"
      PICS: MCORE.BRIDGE && MCORE.BRIDGE.AllowDeviceRename
      verification: |
          Read the NodeLabel attribute of the Bridged Device Basic Information cluster with EP 3

          ./chip-tool bridgeddevicebasic read node-label 1 3

          Verify in TH(chip-tool) Log
          [1657013337.140125][5753:5758] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0039 Attribute 0x0000_0005 DataVersion: 3293551312
          [1657013337.140235][5753:5758] CHIP:TOO:   NodeLabel: Light 1
      disabled: true

    - label:
          "Using manufacturer provided means (i.e. NOT using Matter protocol),
          update the name of this bridged device"
      verification: |
          Press b in bridge-app

          b
          [1657013342.067936][16436:16443] CHIP:DL: Device[Light 1]: New Name="Light 1b"
      disabled: true

    - label:
          "Read the NodeLabel attribute of the Bridged Device Basic Information
          cluster on the same endpoint as in 1a"
      verification: |
          Read the NodeLabel attribute of the Bridged Device Basic Information cluster with EP 3, verify the name is changed

          ./chip-tool bridgeddevicebasic read node-label 1 3

          Verify in TH(chip-tool) Log
          [1657013347.277584][5759:5764] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0039 Attribute 0x0000_0005 DataVersion: 3293551313
          [1657013347.277631][5759:5764] CHIP:TOO:   NodeLabel: Light 1b
      disabled: true

    - label:
          "Choose a bridged device for which the state can be changed through a
          non-Matter interface (example: bridge manufacturer provides an app
          which can change the state of the bridged devices, e.g. change a
          lights brightness)"
      PICS: MCORE.BRIDGE && MCORE.BRIDGE.OtherControl
      verification: |
          Choose on-off cluster on EP 3
      disabled: true

    - label: "Read the state (e.g. on/off, brightness) of that bridged device"
      verification: |
          Read OnOff attribute of On/Off cluster

          ./chip-tool onoff read on-off 1 3

          Verify in TH(chip-tool) Log
          [1657004565.254591][4804:4809] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 3808303316
          [1657004565.254635][4804:4809] CHIP:TOO:   OnOff: TRUE
      disabled: true

    - label:
          "Change the state (e.g. on/off, brightness) of that bridged device
          with this other interface."
      verification: |
          Press c on bridge-app to change the state
      disabled: true

    - label: "Read the state of that bridged device again (as in 2b)"
      verification: |
          Read OnOff attribute of On/Off cluster and verify the value is different compared to step 2b

          ./chip-tool onoff read on-off 1 3

          Verify in TH(chip-tool) Log
          [1657004454.213279][4792:4798] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 3808303315
          [1657004454.213319][4792:4798] CHIP:TOO:   OnOff: FALSE
      disabled: true
