async def test_connect_ws(): broker = Broker(broker_config, plugin_namespace="amqtt.test.plugins") await broker.start() client = MQTTClient() await client.connect("ws://127.0.0.1:8080/") assert client.session is not None await client.disconnect() await broker.shutdown()
async def test_reconnect_ws_retain_username_password(): broker = Broker(broker_config, plugin_namespace="amqtt.test.plugins") await broker.start() client = MQTTClient() await client.connect("ws://*****:*****@127.0.0.1:8080/") assert client.session is not None await client.disconnect() await client.reconnect() assert client.session.username is not None assert client.session.password is not None await broker.shutdown()
async def test_unsubscribe(): broker = Broker(broker_config, plugin_namespace="amqtt.test.plugins") await broker.start() client = MQTTClient() await client.connect("mqtt://127.0.0.1/") assert client.session is not None ret = await client.subscribe([ ("$SYS/broker/uptime", QOS_0), ]) assert ret[0] == QOS_0 await client.unsubscribe(["$SYS/broker/uptime"]) await client.disconnect() await broker.shutdown()
async def test_deliver_timeout(): broker = Broker(broker_config, plugin_namespace="amqtt.test.plugins") await broker.start() client = MQTTClient() await client.connect("mqtt://127.0.0.1/") assert client.session is not None ret = await client.subscribe([ ("test_topic", QOS_0), ]) assert ret[0] == QOS_0 with pytest.raises(asyncio.TimeoutError): await client.deliver_message(timeout=2) await client.unsubscribe(["$SYS/broker/uptime"]) await client.disconnect() await broker.shutdown()
async def test_deliver(): data = b"data" broker = Broker(broker_config, plugin_namespace="amqtt.test.plugins") await broker.start() client = MQTTClient() await client.connect("mqtt://127.0.0.1/") assert client.session is not None ret = await client.subscribe([ ("test_topic", QOS_0), ]) assert ret[0] == QOS_0 client_pub = MQTTClient() await client_pub.connect("mqtt://127.0.0.1/") await client_pub.publish("test_topic", data, QOS_0) await client_pub.disconnect() message = await client.deliver_message() assert message is not None assert message.publish_packet is not None assert message.data == data await client.unsubscribe(["$SYS/broker/uptime"]) await client.disconnect() await broker.shutdown()
"auth": { "allow-anonymous": True, "password-file": os.path.join(os.path.dirname(os.path.realpath(__file__)), "passwd"), "plugins": ["auth_file", "auth_anonymous"], }, "topic-check": { "enabled": True, "plugins": ["topic_acl"], "acl": { # username: [list of allowed topics] "test": ["repositories/+/master", "calendar/#", "data/memes"], "anonymous": [], }, }, } broker = Broker(config) async def test_coro(): await broker.start() if __name__ == "__main__": formatter = "[%(asctime)s] :: %(levelname)s :: %(name)s :: %(message)s" logging.basicConfig(level=logging.INFO, format=formatter) asyncio.get_event_loop().run_until_complete(test_coro()) asyncio.get_event_loop().run_forever()