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()
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"
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"}))
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()
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()
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}
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")
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"} })
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} })
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} })
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", })
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)
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
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, } })
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)
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)
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")
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, } })
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})]
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()
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")]
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()
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" })
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")
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", } })
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"}
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"} } })
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"}
def test_missing_attribute(self): client = FakeClient() control_base = WebOSControlBase(client) control_base.COMMANDS = {} with raises(AttributeError): control_base.attribute()
def test_invalid_input_command(self): client = FakeClient() inp = InputControl(client) with raises(AttributeError): inp.invalid_command()