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_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_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_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_send_minimum_params(self): client = FakeClient() client.send_message('req', "uri", None, unique_id="1") client.assert_sent_message({"uri": "uri", "type": "req", "id": "1"})
def test_registration(self): client = FakeClient() sent_event = Event() def make_response(prompt, registered, wrong): def send_response(): sent_event.wait() sent_event.clear() if prompt: client.received_message( json.dumps({ "id": "1", "payload": { "pairingType": "PROMPT" } })) if registered: client.received_message( json.dumps({ "id": "1", "payload": { "client-key": "xyz" }, "type": "registered" })) if wrong: client.received_message( json.dumps({ "id": "1", "type": "wrong-response" })) return send_response def patched_send_message(*args, **kwargs): kwargs["unique_id"] = "1" obj = WebOSClient.send_message(client, *args, **kwargs) sent_event.set() return obj client.send_message = patched_send_message store = {} Thread(target=make_response(True, True, False)).start() gen = client.register(store, timeout=10) assert next(gen) == WebOSClient.PROMPTED assert next(gen) == WebOSClient.REGISTERED assert store == {"client_key": "xyz"} # Test with non-empty store. Thread(target=make_response(False, True, False)).start() assert list(client.register(store, timeout=10)) ==\ [WebOSClient.REGISTERED] assert "xyz" in json.dumps(client.sent_message) # Test wrong response. Thread(target=make_response(False, False, True)).start() with raises(Exception): list(client.register(store, timeout=10))