Added test and small date fix.

This commit is contained in:
2026-03-19 22:59:45 +01:00 Verified
parent ffbb4d718f
commit 34a5582b58
11 changed files with 340 additions and 23 deletions
+37
View File
@@ -0,0 +1,37 @@
# tests/test_mqtt.py
import pytest
import socket
from tools.mqtt import MQTT
def test_mqtt_ip_resolution_success(mocker):
# Force socket.gethostbyname to simulate a working DNS
mocker.patch("socket.gethostbyname", return_value="10.11.0.33")
mqtt_client = MQTT()
assert mqtt_client.IP == "10.11.0.33"
def test_mqtt_ip_resolution_fallback(mocker, caplog):
# Simulate a DNS timeout (like what happened to you earlier!)
mocker.patch("socket.gethostbyname", side_effect=socket.timeout("DNS down"))
mqtt_client = MQTT()
# Assert it fell back to the static IP from your .env / constants
assert mqtt_client.IP == "10.11.0.33"
assert "Falling back to static IP" in caplog.text
def test_mqtt_send_error_handling(mocker, caplog):
# Mock the actual publish function to throw a connection error
mocker.patch(
"tools.mqtt.mqtt_publish", side_effect=ConnectionRefusedError("Broker offline")
)
mqtt_client = MQTT()
mqtt_client.send({"temp": 20})
# Assert it didn't crash, and logged the error
assert "MQTT data couldn't be sent" in caplog.text