コード例 #1
0
def test_app_list(connection: Mock) -> None:
    """Ensure valid app_list data can be parsed."""
    connection.recv.side_effect = [
        MS_CHANNEL_CONNECT_SAMPLE,
        ED_INSTALLED_APP_SAMPLE,
    ]
    tv = SamsungTVWS("127.0.0.1")
    assert tv.app_list() == [
        {
            "appId": "111299001912",
            "app_type": 2,
            "icon":
            "/opt/share/webappservice/apps_icon/FirstScreen/111299001912/250x250.png",
            "is_lock": 0,
            "name": "YouTube",
        },
        {
            "appId": "3201608010191",
            "app_type": 2,
            "icon":
            "/opt/share/webappservice/apps_icon/FirstScreen/3201608010191/250x250.png",
            "is_lock": 0,
            "name": "Deezer",
        },
    ]
コード例 #2
0
def test_connect_with_extra_event(connection: Mock) -> None:
    """Ensure simple data can be parsed."""
    connection.recv = Mock(side_effect=[
        MS_VOICEAPP_HIDE_SAMPLE,
        ED_EDENTV_UPDATE_SAMPLE,
        MS_CHANNEL_CONNECT_SAMPLE,
    ])
    tv = SamsungTVWS("127.0.0.1")
    tv.open()
    assert tv.token == 123456789
コード例 #3
0
def test_send_hold_key(connection: Mock) -> None:
    """Ensure simple data can be parsed."""
    connection.recv.side_effect = [MS_CHANNEL_CONNECT_SAMPLE]

    tv = SamsungTVWS("127.0.0.1")
    with patch("samsungtvws.connection.time.sleep") as patch_sleep:
        tv.hold_key("KEY_POWER", 3)

    assert patch_sleep.call_count == 3
    assert patch_sleep.call_args_list == [call(1), call(3), call(1)]
コード例 #4
0
def test_app_list_invalid(connection: Mock) -> None:
    """Ensure simple data can be parsed."""
    connection.recv.side_effect = [
        MS_CHANNEL_CONNECT_SAMPLE,
        ED_APPS_LAUNCH_SAMPLE,
    ]
    tv = SamsungTVWS("127.0.0.1")
    assert tv.app_list() is None
    connection.send.assert_called_once_with(
        '{"method": "ms.channel.emit", "params": {"event": "ed.installedApp.get", "to": "host"}}'
    )
コード例 #5
0
def test_send_key(connection: Mock) -> None:
    """Ensure simple data can be parsed."""
    connection.recv.side_effect = [MS_CHANNEL_CONNECT_SAMPLE]
    tv = SamsungTVWS("127.0.0.1")
    tv.send_key("KEY_POWER")
    connection.send.assert_called_once_with(
        '{"method": "ms.remote.control", "params": {'
        '"Cmd": "Click", '
        '"DataOfCmd": "KEY_POWER", '
        '"Option": "false", '
        '"TypeOfRemote": "SendRemoteKey"'
        "}}")
コード例 #6
0
def test_create_connection_from_remote() -> None:
    connection = Mock()
    with patch(
        "samsungtvws.connection.websocket.create_connection"
    ) as connection_class:
        connection_class.return_value = connection
        connection.recv.side_effect = [
            MS_CHANNEL_CONNECT_SAMPLE,
            MS_CHANNEL_READY_SAMPLE,
        ]

        tv_art = SamsungTVWS("127.0.0.1").art()
        tv_art.set_artmode("test")

        connection_class.assert_called_once_with(
            "ws://127.0.0.1:8001/api/v2/channels/com.samsung.art-app?name=U2Ftc3VuZ1R2UmVtb3Rl",
            None,
            sslopt={},
            connection="Connection: Upgrade",
        )
コード例 #7
0
import concurrent
import json
import os

import websockets

from samsungtvws.remote import SamsungTVWS

TV_IP = "192.168.0.X"

if "X" in TV_IP:
    raise ValueError(
        "Please set the IP address of your TV in the TV_IP variable")

token_file = os.path.dirname(os.path.realpath(__file__)) + "/tv-token.txt"
tv = SamsungTVWS(host=TV_IP, port=8002, token_file=token_file)

loop = asyncio.get_event_loop()
executor = concurrent.futures.ThreadPoolExecutor(max_workers=3)


def move_tv_cursor(move_event):
    print("moving: {}".format(move_event))
    tv.move_cursor(move_event["x"], move_event["y"])


def send_click_to_tv(event):
    key = event["key"]
    print("Clicked {}".format(key))
    tv.send_key(key)
コード例 #8
0
def test_connection_failure(connection: Mock) -> None:
    """Ensure simple data can be parsed."""
    connection.recv = Mock(side_effect=[MS_ERROR_SAMPLE])
    tv = SamsungTVWS("127.0.0.1")
    with pytest.raises(ConnectionFailure):
        tv.open()
コード例 #9
0
def test_connect(connection: Mock) -> None:
    """Ensure simple data can be parsed."""
    connection.recv = Mock(side_effect=[MS_CHANNEL_CONNECT_SAMPLE])
    tv = SamsungTVWS("127.0.0.1")
    tv.open()
    assert tv.token == 123456789