async def test_publish_message_specific_queue(*, mock_server, mock_client, amqp_client): with given: queue1, queue2 = "test_queue1", "test_queue2" message1, message2 = "text1", "text2" await mock_client.publish_message(queue1, Message(message1)) with when: await mock_client.publish_message(queue2, Message(message2)) with then: await amqp_client.consume(queue1) messages = await amqp_client.wait_for(message_count=1) assert len(messages) == 1 assert messages[0].body == to_binary(message1)
async def test_get_queue_message_history(*, mock_server, mock_client, amqp_client): with given: queue = "test_queue" message1, message2 = "text1", "text2" await mock_client.publish_message(queue, Message(message1)) await mock_client.publish_message(queue, Message(message2)) await amqp_client.consume(queue) await amqp_client.wait_for(message_count=2) with when: history = await mock_client.get_queue_message_history(queue) with then: assert len(history) == 2 assert history[0].message.value == message2 assert history[1].message.value == message1
async def test_publish_multiple_messages(*, mock_server, mock_client, amqp_client): with given: queue = "test_queue" message1, message2 = "text1", "text2" await mock_client.publish_message(queue, Message(message1)) with when: await mock_client.publish_message(queue, Message(message2)) with then: await amqp_client.consume(queue) messages = await amqp_client.wait_for(message_count=2) assert len(messages) == 2 assert messages[0].body == to_binary(message1) assert messages[1].body == to_binary(message2)
async def test_reset_history(*, mock_server, mock_client, amqp_client): with given: queue = "test_queue" await mock_client.publish_message(queue, Message("text")) await amqp_client.consume(queue) with when: result = await mock_client.reset() with then: assert result is None history = await mock_client.get_queue_message_history(queue) assert len(history) == 0
async def test_reset_queues(*, mock_server, mock_client, amqp_client): with given: queue = "test_queue" await mock_client.publish_message(queue, Message("text")) with when: result = await mock_client.reset() with then: assert result is None await amqp_client.consume(queue) await amqp_client.wait(seconds=0.1) assert len(amqp_client.get_consumed_messages()) == 0
async def test_get_queue_message_history_nacked(*, mock_server, mock_client, amqp_client): with given: queue = "test_queue" await mock_client.publish_message(queue, Message("text")) await amqp_client.consume_nack(queue) await amqp_client.wait_for(message_count=1) with when: history = await mock_client.get_queue_message_history(queue) with then: assert len(history) == 1 assert isinstance(history[0], QueuedMessage) assert history[0].status == MessageStatus.NACKED
async def test_publish_single_message(*, mock_server, mock_client, amqp_client): with given: queue = "test_queue" message = "text" with when: await mock_client.publish_message(queue, Message(message)) with then: await amqp_client.consume(queue) messages = await amqp_client.wait_for(message_count=1) assert len(messages) == 1 assert messages[0].body == to_binary(message)
async def test_get_queue_message_history_init(*, mock_server, mock_client): with given: queue = "test_queue" message = "text" await mock_client.publish_message(queue, Message(message)) with when: history = await mock_client.get_queue_message_history(queue) with then: assert len(history) == 1 assert isinstance(history[0], QueuedMessage) assert history[0].status == MessageStatus.INIT assert history[0].queue == queue assert history[0].message.value == message
async def main(): async with create_amqp_mock() as mock: await mock.client.publish_message("queue", Message([1, 2, 3])) connection = await aiormq.connect( f"amqp://{mock.amqp_server.host}:{mock.amqp_server.port}") channel = await connection.channel() async def on_message(message): await channel.basic_ack(message.delivery.delivery_tag) await channel.basic_consume("queue", on_message) history = await mock.client.get_queue_message_history("queue") assert history[0].message.value == [1, 2, 3] assert history[0].status == MessageStatus.ACKED
async def test_async_context_manager(): with given: storage = Storage() http_server = HttpServer(storage, port=8080) amqp_server = AmqpServer(storage, port=5674) queue = "test_queue" async with given, \ create_amqp_mock(http_server, amqp_server) as mock, \ AmqpClient(amqp_server.host, amqp_server.port) as amqp_client: with when: await mock.client.publish_message(queue, Message("text")) with then: await amqp_client.consume(queue) messages = await amqp_client.wait_for(message_count=1) assert len(messages) == 1