Improve code coverage MQTT integration (#64546)

pull/61237/head
Jan Bouwhuis 2022-01-20 13:51:19 +01:00 committed by GitHub
parent f9cd67675f
commit 31a9d64572
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 38 additions and 6 deletions

View File

@ -2338,7 +2338,7 @@ async def test_custom_availability_payload(hass, mqtt_mock):
async def test_valid_device_class(hass, mqtt_mock):
"""Test the setting of a valid sensor class."""
"""Test the setting of a valid device class."""
assert await async_setup_component(
hass,
cover.DOMAIN,
@ -2358,7 +2358,7 @@ async def test_valid_device_class(hass, mqtt_mock):
async def test_invalid_device_class(hass, mqtt_mock):
"""Test the setting of an invalid sensor class."""
"""Test the setting of an invalid device class."""
assert await async_setup_component(
hass,
cover.DOMAIN,

View File

@ -21,6 +21,7 @@ import homeassistant.core as ha
from homeassistant.core import CoreState, callback
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers import device_registry as dr, template
from homeassistant.helpers.entity import Entity
from homeassistant.setup import async_setup_component
from homeassistant.util.dt import utcnow
@ -244,18 +245,18 @@ async def test_value_template_value(hass):
variables = {"id": 1234, "some_var": "beer"}
# test rendering value
tpl = template.Template("{{ value_json.id }}", hass)
tpl = template.Template("{{ value_json.id }}")
val_tpl = mqtt.MqttValueTemplate(tpl, hass=hass)
assert val_tpl.async_render_with_possible_json_value('{"id": 4321}') == "4321"
# test variables at rendering
tpl = template.Template("{{ value_json.id }} {{ some_var }}", hass)
val_tpl = mqtt.MqttValueTemplate(tpl, hass=hass)
tpl = template.Template("{{ value_json.id }} {{ some_var }} {{ code }}")
val_tpl = mqtt.MqttValueTemplate(tpl, hass=hass, config_attributes={"code": 1234})
assert (
val_tpl.async_render_with_possible_json_value(
'{"id": 4321}', variables=variables
)
== "4321 beer"
== "4321 beer 1234"
)
# test with default value if an error occurs due to an invalid template
@ -266,6 +267,13 @@ async def test_value_template_value(hass):
== "my default"
)
# test value template with entity
entity = Entity()
entity.hass = hass
tpl = template.Template("{{ value_json.id }}")
val_tpl = mqtt.MqttValueTemplate(tpl, entity=entity)
assert val_tpl.async_render_with_possible_json_value('{"id": 4321}') == "4321"
async def test_service_call_without_topic_does_not_publish(hass, mqtt_mock):
"""Test the service call if topic is missing."""
@ -458,6 +466,30 @@ async def test_service_call_with_ascii_qos_retain_flags(hass, mqtt_mock):
assert not mqtt_mock.async_publish.call_args[0][3]
async def test_publish_function_with_bad_encoding_conditions(hass, caplog):
"""Test internal publish function with bas use cases."""
await mqtt.async_publish(
hass, "some-topic", "test-payload", qos=0, retain=False, encoding=None
)
assert (
"Can't pass-through payload for publishing test-payload on some-topic with no encoding set, need 'bytes' got <class 'str'>"
in caplog.text
)
caplog.clear()
await mqtt.async_publish(
hass,
"some-topic",
"test-payload",
qos=0,
retain=False,
encoding="invalid_encoding",
)
assert (
"Can't encode payload for publishing test-payload on some-topic with encoding invalid_encoding"
in caplog.text
)
def test_validate_topic():
"""Test topic name/filter validation."""
# Invalid UTF-8, must not contain U+D800 to U+DFFF.