diff --git a/tests/components/mqtt/test_init.py b/tests/components/mqtt/test_init.py index 3aa378cb4d8..3fe211933bc 100644 --- a/tests/components/mqtt/test_init.py +++ b/tests/components/mqtt/test_init.py @@ -13,7 +13,7 @@ from freezegun.api import FrozenDateTimeFactory import pytest import voluptuous as vol -from homeassistant.components import mqtt +from homeassistant.components import automation, mqtt from homeassistant.components.mqtt import debug_info from homeassistant.components.mqtt.models import ( MessageCallbackType, @@ -415,6 +415,34 @@ async def test_publish_function_with_bad_encoding_conditions( ) +@pytest.mark.parametrize( + "hass_config", + [ + { + automation.DOMAIN: { + "trigger": {"platform": "event", "event_type": "test_event"}, + "action": { + "service": "mqtt.publish", + "data": {"topic": "test/{{ 4 + 4}}", "payload": "{{ 4 * 4}}"}, + }, + } + } + ], +) +async def test_service_call_with_templates_though_an_automation( + hass: HomeAssistant, + hass_config: ConfigType, + mqtt_mock_entry: MqttMockHAClientGenerator, +) -> None: + """Test the service call with templated args through an automation.""" + await async_setup_component(hass, automation.DOMAIN, hass_config) + mqtt_mock = await mqtt_mock_entry() + hass.bus.async_fire("test_event") + await hass.async_block_till_done(wait_background_tasks=True) + + mqtt_mock.async_publish.assert_called_with("test/8", "16", 0, False) + + def test_validate_topic() -> None: """Test topic name/filter validation.""" # Invalid UTF-8, must not contain U+D800 to U+DFFF.