M8-R01: add configurable MQTT client identity
This commit is contained in:
@@ -251,6 +251,7 @@ def test_replace_source_uses_isolated_client_and_source_credentials() -> None:
|
||||
password="one-secret",
|
||||
tls_enabled=True,
|
||||
subscriptions={"one/topic": lambda payload: received.append(("one", payload))},
|
||||
base_client_id="home-automation-dev",
|
||||
)
|
||||
manager.replace_source(
|
||||
2,
|
||||
@@ -284,6 +285,25 @@ def test_replace_source_uses_isolated_client_and_source_credentials() -> None:
|
||||
assert received == [("two", b"two"), ("changed", b"changed")]
|
||||
|
||||
|
||||
def test_source_client_id_is_scoped_by_deployment_and_source() -> None:
|
||||
manager = MqttManager()
|
||||
client = MagicMock()
|
||||
|
||||
with patch("app.integrations.mqtt.mqtt.Client", return_value=client) as mock_cls:
|
||||
assert manager.replace_source(
|
||||
42,
|
||||
host="broker.test",
|
||||
port=1883,
|
||||
username="",
|
||||
password="",
|
||||
tls_enabled=False,
|
||||
subscriptions={"topic": lambda _payload: None},
|
||||
base_client_id="home-automation-dev",
|
||||
)
|
||||
|
||||
assert mock_cls.call_args.kwargs["client_id"] == "home-automation-dev-dsmr-source-42"
|
||||
|
||||
|
||||
def test_replaced_source_client_callbacks_cannot_reach_new_generation() -> None:
|
||||
"""A retained old paho client cannot subscribe, mutate state, or dispatch new handlers."""
|
||||
manager = MqttManager()
|
||||
|
||||
Reference in New Issue
Block a user