コード例 #1
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
    def test_unsubscribe(self):
        client = FakeClient()
        control_base = WebOSControlBase(client)
        control_base.COMMANDS = {
            "test": {
                "uri": "/test",
                "subscription": True
            },
        }

        resp = []
        e1, e2 = Event(), Event()
        events = [e1, e2]

        def callback(status, payload):
            resp.append((status, payload))
            control_base.unsubscribe_test()
            events.pop(0).set()

        client.setup_subscribe_response("/test", [{"a": 1}, {"a": 2}])
        control_base.subscribe_test(callback)
        assert e1.wait(timeout=5)
        assert not e2.wait(timeout=5)

        assert resp == [(True, {"a": 1})]

        with raises(ValueError):
            control_base.unsubscribe_test()
コード例 #2
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
    def test_get_current(self):
        client = FakeClient()
        app = ApplicationControl(client)

        client.setup_response(
            "ssap://com.webos.applicationManager/getForegroundAppInfo",
            {"returnValue": True, "appId": "123"})
        assert app.get_current() == "123"
コード例 #3
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
    def test_bad_launch(self):
        client = FakeClient()
        app = ApplicationControl(client)

        client.setup_response("ssap://system.launcher/launch",
                              {"returnValue": False})
        with raises(IOError):
            app.launch(Application({"id": "123"}))
コード例 #4
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
    def test_bad_list_apps(self):
        client = FakeClient()
        app = ApplicationControl(client)

        client.setup_response("ssap://com.webos.applicationManager/listApps",
                              {"returnValue": False})
        with raises(IOError):
            app.list_apps()
コード例 #5
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
    def test_bad_mouse_socket(self):
        client = FakeClient()
        inp = InputControl(client, ws_class=FakeMouseClient)

        client.setup_response(
            "ssap://com.webos.service.networkinput/getPointerInputSocket",
            {"socketPath": ""})
        with raises(IOError):
            inp.connect_input()
コード例 #6
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
    def test_exec_command_blocking(self):
        client = FakeClient()
        control_base = WebOSControlBase(client)
        control_base.COMMANDS = {
            "test": {"uri": "/test"}
        }

        client.setup_response("/test", {"resp": True})
        assert control_base.test() == {"resp": True}
コード例 #7
0
ファイル: test_connection.py プロジェクト: xmacinka/PyWebOSTV
    def test_get_queue(self):
        client = FakeClient()
        queue = client.send_message('req',
                                    'uri', {"item": "payload"},
                                    unique_id="1",
                                    get_queue=True)
        client.received_message(json.dumps({"id": "1", "test": "test"}))

        assert queue.get(block=True, timeout=1) == dict(id="1", test="test")
コード例 #8
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
    def test_notify(self):
        client = FakeClient()
        system = SystemControl(client)
        system.notify("test", block=False)

        client.assert_sent_message_without_id({
            "type": "request",
            "uri": "ssap://system.notifications/createToast",
            "payload": {"message": "test"}
        })
コード例 #9
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
    def test_set_volume(self):
        client = FakeClient()
        media = MediaControl(client)
        media.set_volume(30, block=False)

        client.assert_sent_message_without_id({
            "type": "request",
            "uri": "ssap://audio/setVolume",
            "payload": {"volume": 30}
        })
コード例 #10
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
    def test_unmute(self):
        client = FakeClient()
        media = MediaControl(client)
        media.mute(False, block=False)

        client.assert_sent_message_without_id({
            "type": "request",
            "uri": "ssap://audio/setMute",
            "payload": {"mute": False}
        })
コード例 #11
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
    def test_enter(self):
        client = FakeClient()
        inp = InputControl(client)

        inp.enter(block=False)

        client.assert_sent_message_without_id({
            "type": "request",
            "uri": "ssap://com.webos.service.ime/sendEnterKey",
        })
コード例 #12
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
    def test_exec_timeout(self):
        client = FakeClient()
        control_base = WebOSControlBase(client)
        control_base.COMMANDS = {
            "test": {
                "uri": "/test",
            },
        }

        client.setup_response("/another-uri", {"resp": True})
        with raises(Exception):
            control_base.test(timeout=1)
コード例 #13
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
    def test_list_apps(self):
        client = FakeClient()
        app = ApplicationControl(client)

        appInfo = {"id": "1", "key": "value"}
        fake_response = {
            "returnValue": True,
            "apps": [appInfo]
        }
        client.setup_response("ssap://com.webos.applicationManager/listApps",
                              fake_response)
        assert app.list_apps()[0].data == appInfo
コード例 #14
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
    def test_delete(self):
        client = FakeClient()
        inp = InputControl(client)

        inp.delete(4, block=False)

        client.assert_sent_message_without_id({
            "type": "request",
            "uri": "ssap://com.webos.service.ime/deleteCharacters",
            "payload": {
                "count": 4,
            }
        })
コード例 #15
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
    def test_exec_command_failed_blocking(self):
        client = FakeClient()
        control_base = WebOSControlBase(client)
        control_base.COMMANDS = {
            "test": {
                "uri": "/test",
                "validation": lambda *args: (False, "err"),
                "validation_error": "Error"
            },
        }

        client.setup_response("/test", {"resp": True})
        with raises(IOError):
            control_base.test(block=True)
コード例 #16
0
ファイル: test_connection.py プロジェクト: xmacinka/PyWebOSTV
    def test_new_registration(self):
        client = FakeClient()
        store = {}
        with raises(Exception, message="Timeout."):
            next(client.register(store, timeout=1))

        assert 'client-key' not in json.dumps(client.sent_message)

        store["client_key"] = "KEY!@#"

        with raises(Exception, message="Timeout."):
            next(client.register(store, timeout=1))

        assert 'KEY!@#' in json.dumps(client.sent_message)
コード例 #17
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
    def test_input_commands(self, command, args, kwargs, data):
        client = FakeClient()
        inp = InputControl(client, ws_class=FakeMouseClient)

        client.setup_response(
            "ssap://com.webos.service.networkinput/getPointerInputSocket",
            {"socketPath": "x"})
        inp.connect_input()
        getattr(inp, command)(*args, block=False, **kwargs)
        inp.disconnect_input()

        split = data.split()
        expected = [x + ":" + y for x, y in zip(split[::2], split[1::2])]
        inp.mouse_ws.assert_sent_message("\n".join(expected) + "\n\n")
コード例 #18
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
    def test_type(self):
        client = FakeClient()
        inp = InputControl(client)

        inp.type("hello world", block=False)

        client.assert_sent_message_without_id({
            "type": "request",
            "uri": "ssap://com.webos.service.ime/insertText",
            "payload": {
                "text": "hello world",
                "replace": 0,
            }
        })
コード例 #19
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
    def test_exec_command_callback(self):
        client = FakeClient()
        control_base = WebOSControlBase(client)
        control_base.COMMANDS = {
            "test": {"uri": "/test"}
        }

        response = []
        event = Event()

        def callback(status, resp):
            response.append((status, resp))
            event.set()

        client.setup_response("/test", {"resp": True})
        control_base.test(callback=callback)
        event.wait()

        assert response == [(True, {"resp": True})]
コード例 #20
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
    def test_subscription_not_allowed(self):
        client = FakeClient()
        control_base = WebOSControlBase(client)
        control_base.COMMANDS = {
            "test": {
                "uri": "/test",
            },
        }
        with raises(AttributeError):
            control_base.subscribe_test(None)

        with raises(AttributeError):
            control_base.unsubscribe_test()
コード例 #21
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
    def test_exec_command_failed_callback(self):
        client = FakeClient()
        control_base = WebOSControlBase(client)
        control_base.COMMANDS = {
            "test": {
                "uri": "/test",
                "validation": lambda *args: (False, "err"),
                "validation_error": "Error"
            }
        }

        response = []
        event = Event()

        def callback(status, resp):
            response.append((status, resp))
            event.set()

        client.setup_response("/test", {"resp": True})
        control_base.test(callback=callback)
        event.wait()

        assert response == [(False, "err")]
コード例 #22
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
    def test_subscription_not_found(self):
        client = FakeClient()
        control_base = WebOSControlBase(client)
        control_base.COMMANDS = {
            "test": {
                "uri": "/test",
                "subscription": True
            },
        }

        with raises(AttributeError):
            control_base.subscribe_something(None)

        with raises(AttributeError):
            control_base.unsubscribe_something()
コード例 #23
0
ファイル: test_connection.py プロジェクト: xmacinka/PyWebOSTV
    def test_unique_id(self):
        uid = "!23"
        client = FakeClient()
        client.send_message('req', 'uri', {"item": "payload"}, unique_id=uid)

        client.assert_sent_message({
            "id": "!23",
            "payload": {
                "item": "payload"
            },
            "type": "req",
            "uri": "uri"
        })
コード例 #24
0
ファイル: test_connection.py プロジェクト: xmacinka/PyWebOSTV
    def test_send_callback(self):
        obj = {}

        def callback(res):
            obj["res"] = res

        client = FakeClient()
        client.send_message('req',
                            'uri', {"item": "payload"},
                            callback=callback,
                            unique_id="1")
        client.received_message(json.dumps({"id": "1", "test": "test"}))

        assert obj["res"] == dict(id="1", test="test")
コード例 #25
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
    def test_close(self):
        client = FakeClient()
        app = ApplicationControl(client)

        client.setup_response("ssap://system.launcher/close",
                              {"returnValue": True})
        app.close({"123": "435"})

        client.assert_sent_message_without_id({
            "type": "request",
            "uri": "ssap://system.launcher/close",
            "payload": {
                "123": "435",
            }
        })
コード例 #26
0
ファイル: test_connection.py プロジェクト: xmacinka/PyWebOSTV
    def test_multiple_send(self):
        client = FakeClient()
        q1 = client.send_message('req',
                                 "uri",
                                 None,
                                 unique_id="1",
                                 get_queue=True)
        q2 = client.send_message('req',
                                 "uri",
                                 None,
                                 unique_id="2",
                                 get_queue=True)

        client.received_message(json.dumps({"id": "2", "test": "test2"}))
        client.received_message(json.dumps({"id": "1", "test": "test1"}))

        assert q1.get(block=True, timeout=1) == {"id": "1", "test": "test1"}
        assert q2.get(block=True, timeout=1) == {"id": "2", "test": "test2"}
コード例 #27
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
    def test_launch(self):
        client = FakeClient()
        app = ApplicationControl(client)

        client.setup_response("ssap://system.launcher/launch",
                              {"returnValue": True})
        application = Application({"id": "123"})
        app.launch(application, content_id="1", params={"a": "b"})

        client.assert_sent_message_without_id({
            "type": "request",
            "uri": "ssap://system.launcher/launch",
            "payload": {
                "id": "123",
                "contentId": "1",
                "params": {"a": "b"}
            }
        })
コード例 #28
0
ファイル: test_connection.py プロジェクト: xmacinka/PyWebOSTV
    def test_clear_waiters(self):
        client = FakeClient()
        q1 = client.send_message('req',
                                 "uri",
                                 None,
                                 unique_id="1",
                                 get_queue=True,
                                 cur_time=lambda: time.time() - 80)
        q2 = client.send_message('req',
                                 "uri",
                                 None,
                                 unique_id="2",
                                 get_queue=True,
                                 cur_time=lambda: time.time() - 20)

        client.received_message(json.dumps({"id": "2", "test": "test2"}))
        client.received_message(json.dumps({"id": "1", "test": "test1"}))

        with raises(Empty):
            assert q1.get(block=True, timeout=1)

        assert q2.get(block=True, timeout=1) == {"id": "2", "test": "test2"}
コード例 #29
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
 def test_missing_attribute(self):
     client = FakeClient()
     control_base = WebOSControlBase(client)
     control_base.COMMANDS = {}
     with raises(AttributeError):
         control_base.attribute()
コード例 #30
0
ファイル: test_controls.py プロジェクト: xmacinka/PyWebOSTV
 def test_invalid_input_command(self):
     client = FakeClient()
     inp = InputControl(client)
     with raises(AttributeError):
         inp.invalid_command()