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_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_subscription(self): result = [] result_event = Event() def callback(obj): result.append(obj) result_event.set() client = FakeClient() client.subscribe('unique_uri', "123", callback) client.received_message(json.dumps({"id": "123", "payload": [1]})) client.received_message(json.dumps({"id": "123", "payload": [2]})) client.received_message(json.dumps({"id": "123", "payload": [3]})) result_event.wait() assert result == [[1], [2], [3]] result = [] client.unsubscribe("123") client.received_message(json.dumps({"id": "123", "payload": [1]})) assert result == [] with raises(ValueError): client.unsubscribe("123")
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"}