Merge pull request #201 from ajmirsky/issues/67

clarifying reason for `ClientError`
pull/198/head^2
Andrew Mirsky 2025-06-14 10:01:06 -04:00 zatwierdzone przez GitHub
commit 67fd2970ab
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
2 zmienionych plików z 22 dodań i 6 usunięć

Wyświetl plik

@ -470,6 +470,7 @@ class MQTTClient:
reader: StreamReaderAdapter | WebSocketsReader | None = None reader: StreamReaderAdapter | WebSocketsReader | None = None
writer: StreamWriterAdapter | WebSocketsWriter | None = None writer: StreamWriterAdapter | WebSocketsWriter | None = None
self._connected_state.clear() self._connected_state.clear()
# Open connection # Open connection
if scheme in ("mqtt", "mqtts"): if scheme in ("mqtt", "mqtts"):
conn_reader, conn_writer = await asyncio.open_connection( conn_reader, conn_writer = await asyncio.open_connection(
@ -489,11 +490,11 @@ class MQTTClient:
) )
reader = WebSocketsReader(websocket) reader = WebSocketsReader(websocket)
writer = WebSocketsWriter(websocket) writer = WebSocketsWriter(websocket)
elif not self.session.broker_uri:
if reader is None or writer is None: msg = "missing broker uri"
self.session.transitions.disconnect() raise ClientError(msg)
self.logger.warning("reader or writer not initialized") else:
msg = "reader or writer not initialized" msg = f"incorrect scheme defined in uri: '{scheme!r}'"
raise ClientError(msg) raise ClientError(msg)
# Start MQTT protocol # Start MQTT protocol

Wyświetl plik

@ -7,7 +7,7 @@ import pytest
from amqtt.broker import Broker from amqtt.broker import Broker
from amqtt.client import MQTTClient from amqtt.client import MQTTClient
from amqtt.errors import ConnectError from amqtt.errors import ClientError, ConnectError
from amqtt.mqtt.constants import QOS_0, QOS_1, QOS_2 from amqtt.mqtt.constants import QOS_0, QOS_1, QOS_2
formatter = "[%(asctime)s] %(name)s {%(filename)s:%(lineno)d} %(levelname)s - %(message)s" formatter = "[%(asctime)s] %(name)s {%(filename)s:%(lineno)d} %(levelname)s - %(message)s"
@ -301,6 +301,21 @@ async def test_client_publish_will_with_retain(broker_fixture, client_config):
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_connect_broken_uri():
config = {"auto_reconnect": False}
client = MQTTClient(config=config)
with pytest.raises(ClientError):
await client.connect('"mqtt://someplace')
@pytest.mark.asyncio
async def test_connect_incorrect_scheme():
config = {"auto_reconnect": False}
client = MQTTClient(config=config)
with pytest.raises(ClientError):
await client.connect('"mq://someplace')
async def test_client_no_auth(): async def test_client_no_auth():