# 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.2. [TC-IDM-1.2] Invoke Response Action from DUT to TH - [{DUT_Server}]

PICS:
    - MCORE.IDM.S

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

tests:
    - label:
          "TH sends the Invoke Request Message to the DUT with the path that
          indicates a specific endpoint that is unsupported."
      verification: |
          The cluster used in the below command is an example, User can use any supported chip cluster.

          ./chip-tool onoff on 1 20

          On TH, verify DUT responsds as unsuppported endpoint  for the data sent in the above command

          [1655718065.882392][4587:4592] CHIP:DMG: Received Command Response Status for Endpoint=20 Cluster=0x0000_0006 Command=0x0000_0001 Status=0x7f
          [1655718065.882440][4587:4592] CHIP:TOO: Error: IM Error 0x0000057F: General error: 0x7f (UNSUPPORTED_ENDPOINT)
          [1655718065.882491][4587:4592] CHIP:DMG: ICR moving to [AwaitingDe]
      disabled: true

    - label:
          "TH sends the Invoke Request Message to the DUT with the path that
          indicates a specific cluster that is unsupported."
      verification: |
          The cluster used in the below command is an example, User can use any supported chip cluster.

          ./chip-tool any command-by-id 0x0003 0 1 1 2

          On TH, verify DUT responsds as unsuppported cluster for the data sent in the above command

          [1655718144.692503][4602:4607] CHIP:DMG: Received Command Response Status for Endpoint=2 Cluster=0x0000_0003 Command=0x0000_0000 Status=0xc3
          [1655718144.692570][4602:4607] CHIP:TOO: Error: IM Error 0x000005C3: General error: 0xc3 (UNSUPPORTED_CLUSTER)
          [1655718144.692627][4602:4607] CHIP:DMG: ICR moving to [AwaitingDe]
      disabled: true

    - label:
          "TH sends the Invoke Request Message to the DUT with the path that
          indicates a specific command that is unsupported."
      verification: |
          The cluster used in the below command is an example, User can use any supported chip cluster.

           ./chip-tool any command-by-id 0x0003 3 1 1 0

          On TH, verify DUT responsds as unsuppported command  for the data sent in the above command

          [1654076838.936184][13752:13757] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_0003 Command=0x0000_0003 Status=0x81
          [1654076838.936215][13752:13757] CHIP:TOO: Error: IM Error 0x00000581: General error: 0x81 (UNSUPPORTED_COMMAND)
          [1654076838.936258][13752:13757] CHIP:DMG: ICR moving to [AwaitingDe]
      disabled: true

    - label:
          "Setup the TH such that it should not have the privilege for the
          cluster in the path. TH sends the Invoke Request Message to the DUT
          with a valid CommandDataIB"
      verification: |
          The cluster used in the below command is an example, User can use any supported chip cluster.


          To Setup the TH such that it should not have the privilege for the cluster in the path. , 1st we need to send below mentioned ACL command
          Here by sending below mentioned ACL command giving only access for ACL cluster(31), So except identify cluster command if try to send any other command will get status as unsupported access.

          ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects":[1,112233], "targets": [{ "cluster":31, "endpoint":0, "deviceType":null }]}]" 1 0
          [1659419722.669629][1915:1920] CHIP:DMG: WriteResponseMessage =
          [1659419722.669657][1915:1920] CHIP:DMG: {
          [1659419722.669687][1915:1920] CHIP:DMG:         AttributeStatusIBs =
          [1659419722.669727][1915:1920] CHIP:DMG:         [
          [1659419722.669758][1915:1920] CHIP:DMG:                 AttributeStatusIB =
          [1659419722.669796][1915:1920] CHIP:DMG:                 {
          [1659419722.669833][1915:1920] CHIP:DMG:                         AttributePathIB =
          [1659419722.669871][1915:1920] CHIP:DMG:                         {
          [1659419722.669912][1915:1920] CHIP:DMG:                                 Endpoint = 0x0,
          [1659419722.669953][1915:1920] CHIP:DMG:                                 Cluster = 0x1f,
          [1659419722.669993][1915:1920] CHIP:DMG:                                 Attribute = 0x0000_0000,
          [1659419722.670034][1915:1920] CHIP:DMG:                         }
          [1659419722.670077][1915:1920] CHIP:DMG:
          [1659419722.670114][1915:1920] CHIP:DMG:                         StatusIB =
          [1659419722.670153][1915:1920] CHIP:DMG:                         {
          [1659419722.670191][1915:1920] CHIP:DMG:                                 status = 0x00 (SUCCESS),
          [1659419722.670229][1915:1920] CHIP:DMG:                         },
          [1659419722.670266][1915:1920] CHIP:DMG:
          [1659419722.670300][1915:1920] CHIP:DMG:                 },
          [1659419722.670343][1915:1920] CHIP:DMG:
          [1659419722.670373][1915:1920] CHIP:DMG:                 AttributeStatusIB =
          [1659419722.670405][1915:1920] CHIP:DMG:                 {
          [1659419722.670436][1915:1920] CHIP:DMG:                         AttributePathIB =
          [1659419722.670471][1915:1920] CHIP:DMG:                         {
          [1659419722.670510][1915:1920] CHIP:DMG:                                 Endpoint = 0x0,
          [1659419722.670550][1915:1920] CHIP:DMG:                                 Cluster = 0x1f,
          [1659419722.670590][1915:1920] CHIP:DMG:                                 Attribute = 0x0000_0000,
          [1659419722.670661][1915:1920] CHIP:DMG:                                 ListIndex = Null,
          [1659419722.670700][1915:1920] CHIP:DMG:                         }
          [1659419722.670740][1915:1920] CHIP:DMG:
          [1659419722.670776][1915:1920] CHIP:DMG:                         StatusIB =
          [1659419722.670813][1915:1920] CHIP:DMG:                         {
          [1659419722.670851][1915:1920] CHIP:DMG:                                 status = 0x00 (SUCCESS),
          [1659419722.670888][1915:1920] CHIP:DMG:                         },
          [1659419722.670925][1915:1920] CHIP:DMG:
          [1659419722.670958][1915:1920] CHIP:DMG:                 },
          [1659419722.670994][1915:1920] CHIP:DMG:
          [1659419722.671022][1915:1920] CHIP:DMG:         ],
          [1659419722.671062][1915:1920] CHIP:DMG:
          [1659419722.671092][1915:1920] CHIP:DMG:         InteractionModelRevision = 1
          [1659419722.671120][1915:1920] CHIP:DMG: }
          [1659419722.671244][1915:1920] CHIP:DMG: WriteClient moving to [AwaitingDe]
          [1659419722.671314][1915:1920] CHIP:EM: Sending Standalone Ack for MessageCounter:153124628 on



          ./chip-tool onoff on 1 1
          On TH, verify DUT  responsds as UNSUPPORTED_ACCESS  for the data sent in the above command
          [1657869005.834700][2816:2821] CHIP:DMG: },
          [1657869005.834790][2816:2821] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0006 Command=0x0000_0001 Status=0x7e
          [1657869005.834841][2816:2821] CHIP:TOO: Error: IM Error 0x0000057E: General error: 0x7e (UNSUPPORTED_ACCESS)
          [1657869005.834899][2816:2821] CHIP:DMG: ICR moving to [AwaitingDe]

          With the above command, we are overwriting the default privilege that chip-tool has as an admin. After this test step you need to  send below mentioned command to Grant access to all clusters again.

          ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode":2, "subjects":[112233], "targets":null}]" 1 0
      disabled: true

    - label:
          "Setup the TH such that there is no accessing fabric TH sends the
          Invoke Request Message to the DUT with a valid and fabric-scoped
          CommandDataIB"
      verification: |
          The cluster used in the below command is an example, User can use any supported chip cluster.


          To Setup the TH such that it should not have the privilege for the cluster in the path. , 1st we need to send below mentioned ACL command
          Here by sending below mentioned ACL command giving only access for ACL cluster(31), So except identify cluster command if try to send any other command will get status as unsupported access.

          ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects":[1,112233], "targets": [{ "cluster":31, "endpoint":0, "deviceType":null }]}]" 1 0
          [1659419722.669629][1915:1920] CHIP:DMG: WriteResponseMessage =
          [1659419722.669657][1915:1920] CHIP:DMG: {
          [1659419722.669687][1915:1920] CHIP:DMG:         AttributeStatusIBs =
          [1659419722.669727][1915:1920] CHIP:DMG:         [
          [1659419722.669758][1915:1920] CHIP:DMG:                 AttributeStatusIB =
          [1659419722.669796][1915:1920] CHIP:DMG:                 {
          [1659419722.669833][1915:1920] CHIP:DMG:                         AttributePathIB =
          [1659419722.669871][1915:1920] CHIP:DMG:                         {
          [1659419722.669912][1915:1920] CHIP:DMG:                                 Endpoint = 0x0,
          [1659419722.669953][1915:1920] CHIP:DMG:                                 Cluster = 0x1f,
          [1659419722.669993][1915:1920] CHIP:DMG:                                 Attribute = 0x0000_0000,
          [1659419722.670034][1915:1920] CHIP:DMG:                         }
          [1659419722.670077][1915:1920] CHIP:DMG:
          [1659419722.670114][1915:1920] CHIP:DMG:                         StatusIB =
          [1659419722.670153][1915:1920] CHIP:DMG:                         {
          [1659419722.670191][1915:1920] CHIP:DMG:                                 status = 0x00 (SUCCESS),
          [1659419722.670229][1915:1920] CHIP:DMG:                         },
          [1659419722.670266][1915:1920] CHIP:DMG:
          [1659419722.670300][1915:1920] CHIP:DMG:                 },
          [1659419722.670343][1915:1920] CHIP:DMG:
          [1659419722.670373][1915:1920] CHIP:DMG:                 AttributeStatusIB =
          [1659419722.670405][1915:1920] CHIP:DMG:                 {
          [1659419722.670436][1915:1920] CHIP:DMG:                         AttributePathIB =
          [1659419722.670471][1915:1920] CHIP:DMG:                         {
          [1659419722.670510][1915:1920] CHIP:DMG:                                 Endpoint = 0x0,
          [1659419722.670550][1915:1920] CHIP:DMG:                                 Cluster = 0x1f,
          [1659419722.670590][1915:1920] CHIP:DMG:                                 Attribute = 0x0000_0000,
          [1659419722.670661][1915:1920] CHIP:DMG:                                 ListIndex = Null,
          [1659419722.670700][1915:1920] CHIP:DMG:                         }
          [1659419722.670740][1915:1920] CHIP:DMG:
          [1659419722.670776][1915:1920] CHIP:DMG:                         StatusIB =
          [1659419722.670813][1915:1920] CHIP:DMG:                         {
          [1659419722.670851][1915:1920] CHIP:DMG:                                 status = 0x00 (SUCCESS),
          [1659419722.670888][1915:1920] CHIP:DMG:                         },
          [1659419722.670925][1915:1920] CHIP:DMG:
          [1659419722.670958][1915:1920] CHIP:DMG:                 },
          [1659419722.670994][1915:1920] CHIP:DMG:
          [1659419722.671022][1915:1920] CHIP:DMG:         ],
          [1659419722.671062][1915:1920] CHIP:DMG:
          [1659419722.671092][1915:1920] CHIP:DMG:         InteractionModelRevision = 1
          [1659419722.671120][1915:1920] CHIP:DMG: }
          [1659419722.671244][1915:1920] CHIP:DMG: WriteClient moving to [AwaitingDe]
          [1659419722.671314][1915:1920] CHIP:EM: Sending Standalone Ack for MessageCounter:153124628 on


           ./chip-tool  generalcommissioning commissioning-complete  1 0
          On TH, verify DUT  responsds as UNSUPPORTED_ACCESS  for the data sent in the above command
          [1659420197.313287][1960:1965] CHIP:DMG: },
          [1659420197.313357][1960:1965] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0004 Status=0x7e
          [1659420197.313397][1960:1965] CHIP:TOO: Error: IM Error 0x0000057E: General error: 0x7e (UNSUPPORTED_ACCESS)
          [1659420197.313441][1960:1965] CHIP:DMG: ICR moving to [AwaitingDe]
          [1659420197.313505][1960:1965] CHIP:EM: Sending Standalone Ack for MessageCounter:66191391 on exchange 52639i


          With the above command, we are overwriting the default privilege that chip-tool has as an admin. After this test step you need to  send below mentioned command to Grant access to all clusters again.

          ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode":2, "subjects":[112233], "targets":null}]" 1 0
      disabled: true

    - label:
          "(OPTIONAL) TH sends the Invoke Request Message to the DUT with the
          command which requires a data response to be sent back."
      verification: |
          The cluster used in the below command is an example, User can use any supported chip cluster.
          sudo ./chip-tool generalcommissioning arm-fail-safe  1000 1  1 0

          On TH,  Verify  DUT generates an InvokeResponseIB with a valid CommandDataIB and
          sends it to the TH for the data sent in the above command

          [1657091692.258118][5248:5253] CHIP:DMG: InvokeResponseMessage =
          [1657091692.258154][5248:5253] CHIP:DMG: {
          [1657091692.258189][5248:5253] CHIP:DMG:         suppressResponse = false,
          [1657091692.258233][5248:5253] CHIP:DMG:         InvokeResponseIBs =
          [1657091692.258280][5248:5253] CHIP:DMG:         [
          [1657091692.258315][5248:5253] CHIP:DMG:                 InvokeResponseIB =
          [1657091692.258362][5248:5253] CHIP:DMG:                 {
          [1657091692.258400][5248:5253] CHIP:DMG:                         CommandDataIB =
          [1657091692.258448][5248:5253] CHIP:DMG:                         {
          [1657091692.258492][5248:5253] CHIP:DMG:                                 CommandPathIB =
          [1657091692.258540][5248:5253] CHIP:DMG:                                 {
          [1657091692.258589][5248:5253] CHIP:DMG:                                         EndpointId = 0x0,
          [1657091692.258641][5248:5253] CHIP:DMG:                                         ClusterId = 0x30,
          [1657091692.258692][5248:5253] CHIP:DMG:                                         CommandId = 0x1,
          [1657091692.258739][5248:5253] CHIP:DMG:                                 },
          [1657091692.258790][5248:5253] CHIP:DMG:
          [1657091692.258834][5248:5253] CHIP:DMG:                                 CommandFields =
          [1657091692.258886][5248:5253] CHIP:DMG:                                 {
          [1657091692.258958][5248:5253] CHIP:DMG:                                         0x0 = 0,
          [1657091692.259011][5248:5253] CHIP:DMG:                                         0x1 = "",
          [1657091692.259061][5248:5253] CHIP:DMG:                                 },
          [1657091692.259107][5248:5253] CHIP:DMG:                         },
          [1657091692.259162][5248:5253] CHIP:DMG:
          [1657091692.259202][5248:5253] CHIP:DMG:                 },
          [1657091692.259246][5248:5253] CHIP:DMG:
          [1657091692.259280][5248:5253] CHIP:DMG:         ],
          [1657091692.259323][5248:5253] CHIP:DMG:
          [1657091692.259358][5248:5253] CHIP:DMG:         InteractionModelRevision = 1
          [1657091692.259392][5248:5253] CHIP:DMG: },
          [1657091692.259477][5248:5253] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001
          [1657091692.259539][5248:5253] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Command 0x0000_0001
          [1657091692.259610][5248:5253] CHIP:TOO:   ArmFailSafeResponse: {
          [1657091692.259656][5248:5253] CHIP:TOO:     errorCode: 0
          [1657091692.259690][5248:5253] CHIP:TOO:     debugText:
          [1657091692.259722][5248:5253] CHIP:TOO:    }
          [1657091692.259775][5248:5253] CHIP:DMG: ICR moving to [AwaitingDe]
          [1657091692.259841][5248:5253] CHIP:EM: Sending Standalone Ack for MessageCounter:215437814 on exchange 22331i
      disabled: true

    - label:
          "TH sends the Invoke Request Message to the DUT with a valid
          CommandDataIB and SuppressResponse set to True"
      verification: |
          Out of Scope for V1.0
          https://github.com/project-chip/connectedhomeip/issues/8043
      disabled: true

    - label:
          "TH sends a Invoke Request Message to the DUT with the TimedRequest
          set as TRUE.(There should be no previous Timed Invoke action.)"
      verification: |
          The cluster used in the below command is an example, User can use any supported chip cluster.


          To Setup the TH such that it should not have the privilege for the cluster in the path. , 1st we need to send below mentioned ACL command
          Here by sending below mentioned ACL command giving only access for identify cluster(3), So except identify cluster command if try to send any other command will get status as unsupported access.

          ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects":[1,112233], "targets": [{ "cluster":31, "endpoint":0, "deviceType":null }]}]" 1 0
          [1659419722.669629][1915:1920] CHIP:DMG: WriteResponseMessage =
          [1659419722.669657][1915:1920] CHIP:DMG: {
          [1659419722.669687][1915:1920] CHIP:DMG:         AttributeStatusIBs =
          [1659419722.669727][1915:1920] CHIP:DMG:         [
          [1659419722.669758][1915:1920] CHIP:DMG:                 AttributeStatusIB =
          [1659419722.669796][1915:1920] CHIP:DMG:                 {
          [1659419722.669833][1915:1920] CHIP:DMG:                         AttributePathIB =
          [1659419722.669871][1915:1920] CHIP:DMG:                         {
          [1659419722.669912][1915:1920] CHIP:DMG:                                 Endpoint = 0x0,
          [1659419722.669953][1915:1920] CHIP:DMG:                                 Cluster = 0x1f,
          [1659419722.669993][1915:1920] CHIP:DMG:                                 Attribute = 0x0000_0000,
          [1659419722.670034][1915:1920] CHIP:DMG:                         }
          [1659419722.670077][1915:1920] CHIP:DMG:
          [1659419722.670114][1915:1920] CHIP:DMG:                         StatusIB =
          [1659419722.670153][1915:1920] CHIP:DMG:                         {
          [1659419722.670191][1915:1920] CHIP:DMG:                                 status = 0x00 (SUCCESS),
          [1659419722.670229][1915:1920] CHIP:DMG:                         },
          [1659419722.670266][1915:1920] CHIP:DMG:
          [1659419722.670300][1915:1920] CHIP:DMG:                 },
          [1659419722.670343][1915:1920] CHIP:DMG:
          [1659419722.670373][1915:1920] CHIP:DMG:                 AttributeStatusIB =
          [1659419722.670405][1915:1920] CHIP:DMG:                 {
          [1659419722.670436][1915:1920] CHIP:DMG:                         AttributePathIB =
          [1659419722.670471][1915:1920] CHIP:DMG:                         {
          [1659419722.670510][1915:1920] CHIP:DMG:                                 Endpoint = 0x0,
          [1659419722.670550][1915:1920] CHIP:DMG:                                 Cluster = 0x1f,
          [1659419722.670590][1915:1920] CHIP:DMG:                                 Attribute = 0x0000_0000,
          [1659419722.670661][1915:1920] CHIP:DMG:                                 ListIndex = Null,
          [1659419722.670700][1915:1920] CHIP:DMG:                         }
          [1659419722.670740][1915:1920] CHIP:DMG:
          [1659419722.670776][1915:1920] CHIP:DMG:                         StatusIB =
          [1659419722.670813][1915:1920] CHIP:DMG:                         {
          [1659419722.670851][1915:1920] CHIP:DMG:                                 status = 0x00 (SUCCESS),
          [1659419722.670888][1915:1920] CHIP:DMG:                         },
          [1659419722.670925][1915:1920] CHIP:DMG:
          [1659419722.670958][1915:1920] CHIP:DMG:                 },
          [1659419722.670994][1915:1920] CHIP:DMG:
          [1659419722.671022][1915:1920] CHIP:DMG:         ],
          [1659419722.671062][1915:1920] CHIP:DMG:
          [1659419722.671092][1915:1920] CHIP:DMG:         InteractionModelRevision = 1
          [1659419722.671120][1915:1920] CHIP:DMG: }
          [1659419722.671244][1915:1920] CHIP:DMG: WriteClient moving to [AwaitingDe]
          [1659419722.671314][1915:1920] CHIP:EM: Sending Standalone Ack for MessageCounter:153124628 on


           ./chip-tool onoff on 1 1 --timedInteractionTimeoutMs 100
          On TH, verify DUT  responsds as UNSUPPORTED_ACCESS  for the data sent in the above command
          [1659422136.353455][2014:2019] CHIP:DMG:
          [1659422136.353482][2014:2019] CHIP:DMG:         InteractionModelRevision = 1
          [1659422136.353510][2014:2019] CHIP:DMG: },
          [1659422136.353575][2014:2019] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0006 Command=0x0000_0001 Status=0x7e
          [1659422136.353612][2014:2019] CHIP:TOO: Error: IM Error 0x0000057E: General error: 0x7e (UNSUPPORTED_ACCESS)
          [1659422136.353653][2014:2019] CHIP:DMG: ICR moving to [AwaitingDe]
          [1659422136.353715][2014:2019] CHIP:EM: Sending Standalone Ack for MessageCounter:11493125 on exchange 55447i



          With the above command, we are overwriting the default privilege that chip-tool has as an admin. After this test step you need to  send below mentioned command to Grant access to all clusters again.

          ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode":2, "subjects":[112233], "targets":null}]" 1 0
      disabled: true

    - label:
          "TH sends Invoke Request Message to the DUT with the command in the
          path that requires a Timed Invoke transaction to invoke and this
          action is not part of a Timed Invoke transaction"
      verification: |
          As in the previous step, we enabled accesscontrol to a specific cluster, we need to remove the accesscontrol using below command.
          As the EP used here is an example, user needs to provide the endpoint id, which they use.



          The cluster used in the below command is an example, User can use any supported chip cluster.

          ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0

          On TH,  verify DUT responsds as NEEDS_TIMED_INTERACTION for the data sent in the above command

          [1654077001.606235][13788:13793] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0xc6
          [1654077001.606268][13788:13793] CHIP:TOO: Error: IM Error 0x000005C6: General error: 0xc6 (NEEDS_TIMED_INTERACTION)
          [1654077001.606311][13788:13793] CHIP:DMG: ICR moving to [AwaitingDe]
      disabled: true
