# 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.

name: Content Launcher Cluster Tests

config:
    nodeId: 0x12344321
    cluster: "Content Launcher"
    endpoint: 1

tests:
    - label: "Wait for the commissioned device to be retrieved"
      cluster: "DelayCommands"
      command: "WaitForCommissionee"
      arguments:
          values:
              - name: "nodeId"
                value: nodeId

    - label: "Read attribute accept header list"
      command: "readAttribute"
      attribute: "AcceptHeader"
      response:
          value: ["example", "example"]

    - label: "Read attribute supported streaming protocols"
      command: "readAttribute"
      attribute: "SupportedStreamingProtocols"
      response:
          value: 0

    - label: "Launch Content Command"
      command: "LaunchContent"
      arguments:
          values:
              - name: "AutoPlay"
                value: true
              - name: "Data"
                value: "exampleData"
              - name: "Search"
                value:
                    {
                        ParameterList:
                            [
                                {
                                    Type: 1,
                                    Value: "exampleValue",
                                    ExternalIDList:
                                        [{ Name: "name", Value: "value" }],
                                },
                            ],
                    }
              - name: "PlaybackPreferences"
                value:
                    {
                        PlaybackPosition: 0,
                        TextTrack:
                            {
                                LanguageCode: "exampleLanguageCode",
                                Characteristics: [0],
                                AudioOutputIndex: 0,
                            },
                        AudioTracks:
                            [
                                {
                                    LanguageCode: "exampleLanguageCode",
                                    Characteristics: [0],
                                    AudioOutputIndex: 0,
                                },
                            ],
                    }
              - name: "UseCurrentContext"
                value: true
      response:
          values:
              - name: "Data"
                value: "exampleData"
              - name: "Status"
                value: 0

    - label: "Launch URL Command"
      command: "LaunchURL"
      arguments:
          values:
              - name: "ContentURL"
                value: "exampleUrl"
              - name: "DisplayString"
                value: "exampleDisplayString"
              - name: "BrandingInformation"
                value:
                    {
                        ProviderName: "exampleName",
                        Background:
                            {
                                ImageURL: "exampleUrl",
                                Color: "exampleColor",
                                Size: { Width: 0, Height: 0, Metric: 0 },
                            },
                        Logo:
                            {
                                ImageURL: "exampleUrl",
                                Color: "exampleColor",
                                Size: { Width: 0, Height: 0, Metric: 0 },
                            },
                        ProgressBar:
                            {
                                ImageURL: "exampleUrl",
                                Color: "exampleColor",
                                Size: { Width: 0, Height: 0, Metric: 0 },
                            },
                        Splash:
                            {
                                ImageURL: "exampleUrl",
                                Color: "exampleColor",
                                Size: { Width: 0, Height: 0, Metric: 0 },
                            },
                        WaterMark:
                            {
                                ImageURL: "exampleUrl",
                                Color: "exampleColor",
                                Size: { Width: 0, Height: 0, Metric: 0 },
                            },
                    }
      response:
          values:
              - name: "Data"
                value: "exampleData"
              - name: "Status"
                value: 0
