From 43091a98562de0a4ccb689a034ad693f92a4c129 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Fri, 7 Oct 2022 14:23:53 +0200 Subject: [PATCH] Revert "Improve device_automation trigger validation" (#79778) Revert "Improve device_automation trigger validation (#75044)" This reverts commit 55b036ec5ef570b146a6126408da929dd66e431e. --- .../components/device_automation/action.py | 6 +-- .../components/device_automation/condition.py | 4 +- .../components/device_automation/trigger.py | 5 +- .../components/rfxtrx/device_action.py | 1 + .../components/device_automation/test_init.py | 51 ++----------------- .../components/webostv/test_device_trigger.py | 3 +- 6 files changed, 14 insertions(+), 56 deletions(-) diff --git a/homeassistant/components/device_automation/action.py b/homeassistant/components/device_automation/action.py index 432ff2fdb7d..081b6bb283a 100644 --- a/homeassistant/components/device_automation/action.py +++ b/homeassistant/components/device_automation/action.py @@ -7,7 +7,6 @@ import voluptuous as vol from homeassistant.const import CONF_DOMAIN from homeassistant.core import Context, HomeAssistant -from homeassistant.helpers import config_validation as cv from homeassistant.helpers.typing import ConfigType from . import DeviceAutomationType, async_get_device_automation_platform @@ -52,15 +51,14 @@ async def async_validate_action_config( ) -> ConfigType: """Validate config.""" try: - config = cv.DEVICE_ACTION_SCHEMA(config) platform = await async_get_device_automation_platform( hass, config[CONF_DOMAIN], DeviceAutomationType.ACTION ) if hasattr(platform, "async_validate_action_config"): return await platform.async_validate_action_config(hass, config) return cast(ConfigType, platform.ACTION_SCHEMA(config)) - except (vol.Invalid, InvalidDeviceAutomationConfig) as err: - raise vol.Invalid("invalid action configuration: " + str(err)) from err + except InvalidDeviceAutomationConfig as err: + raise vol.Invalid(str(err) or "Invalid action configuration") from err async def async_call_action_from_config( diff --git a/homeassistant/components/device_automation/condition.py b/homeassistant/components/device_automation/condition.py index 3b0a5263f9e..d656908f4be 100644 --- a/homeassistant/components/device_automation/condition.py +++ b/homeassistant/components/device_automation/condition.py @@ -58,8 +58,8 @@ async def async_validate_condition_config( if hasattr(platform, "async_validate_condition_config"): return await platform.async_validate_condition_config(hass, config) return cast(ConfigType, platform.CONDITION_SCHEMA(config)) - except (vol.Invalid, InvalidDeviceAutomationConfig) as err: - raise vol.Invalid("invalid condition configuration: " + str(err)) from err + except InvalidDeviceAutomationConfig as err: + raise vol.Invalid(str(err) or "Invalid condition configuration") from err async def async_condition_from_config( diff --git a/homeassistant/components/device_automation/trigger.py b/homeassistant/components/device_automation/trigger.py index aac56b39846..bd72b24d844 100644 --- a/homeassistant/components/device_automation/trigger.py +++ b/homeassistant/components/device_automation/trigger.py @@ -58,15 +58,14 @@ async def async_validate_trigger_config( ) -> ConfigType: """Validate config.""" try: - config = TRIGGER_SCHEMA(config) platform = await async_get_device_automation_platform( hass, config[CONF_DOMAIN], DeviceAutomationType.TRIGGER ) if not hasattr(platform, "async_validate_trigger_config"): return cast(ConfigType, platform.TRIGGER_SCHEMA(config)) return await platform.async_validate_trigger_config(hass, config) - except (vol.Invalid, InvalidDeviceAutomationConfig) as err: - raise InvalidDeviceAutomationConfig("invalid trigger configuration") from err + except InvalidDeviceAutomationConfig as err: + raise vol.Invalid(str(err) or "Invalid trigger configuration") from err async def async_attach_trigger( diff --git a/homeassistant/components/rfxtrx/device_action.py b/homeassistant/components/rfxtrx/device_action.py index 7ea4ed07423..15595b88cd2 100644 --- a/homeassistant/components/rfxtrx/device_action.py +++ b/homeassistant/components/rfxtrx/device_action.py @@ -80,6 +80,7 @@ async def async_validate_action_config( hass: HomeAssistant, config: ConfigType ) -> ConfigType: """Validate config.""" + config = ACTION_SCHEMA(config) commands, _ = _get_commands(hass, config[CONF_DEVICE_ID], config[CONF_TYPE]) sub_type = config[CONF_SUBTYPE] diff --git a/tests/components/device_automation/test_init.py b/tests/components/device_automation/test_init.py index 71c062cf7d9..3ead6fcb35d 100644 --- a/tests/components/device_automation/test_init.py +++ b/tests/components/device_automation/test_init.py @@ -720,28 +720,7 @@ async def test_automation_with_bad_condition_action(hass, caplog): assert "required key not provided" in caplog.text -async def test_automation_with_bad_condition_missing_domain(hass, caplog): - """Test automation with bad device condition.""" - assert await async_setup_component( - hass, - automation.DOMAIN, - { - automation.DOMAIN: { - "alias": "hello", - "trigger": {"platform": "event", "event_type": "test_event1"}, - "condition": {"condition": "device", "device_id": "hello.device"}, - "action": {"service": "test.automation", "entity_id": "hello.world"}, - } - }, - ) - - assert ( - "Invalid config for [automation]: required key not provided @ data['condition'][0]['domain']" - in caplog.text - ) - - -async def test_automation_with_bad_condition_missing_device_id(hass, caplog): +async def test_automation_with_bad_condition(hass, caplog): """Test automation with bad device condition.""" assert await async_setup_component( hass, @@ -756,10 +735,7 @@ async def test_automation_with_bad_condition_missing_device_id(hass, caplog): }, ) - assert ( - "Invalid config for [automation]: required key not provided @ data['condition'][0]['device_id']" - in caplog.text - ) + assert "required key not provided" in caplog.text @pytest.fixture @@ -900,25 +876,8 @@ async def test_automation_with_bad_sub_condition(hass, caplog): assert "required key not provided" in caplog.text -async def test_automation_with_bad_trigger_missing_domain(hass, caplog): - """Test automation with device trigger this is missing domain.""" - assert await async_setup_component( - hass, - automation.DOMAIN, - { - automation.DOMAIN: { - "alias": "hello", - "trigger": {"platform": "device", "device_id": "hello.device"}, - "action": {"service": "test.automation", "entity_id": "hello.world"}, - } - }, - ) - - assert "required key not provided @ data['domain']" in caplog.text - - -async def test_automation_with_bad_trigger_missing_device_id(hass, caplog): - """Test automation with device trigger that is missing device_id.""" +async def test_automation_with_bad_trigger(hass, caplog): + """Test automation with bad device trigger.""" assert await async_setup_component( hass, automation.DOMAIN, @@ -931,7 +890,7 @@ async def test_automation_with_bad_trigger_missing_device_id(hass, caplog): }, ) - assert "required key not provided @ data['device_id']" in caplog.text + assert "required key not provided" in caplog.text async def test_websocket_device_not_found(hass, hass_ws_client): diff --git a/tests/components/webostv/test_device_trigger.py b/tests/components/webostv/test_device_trigger.py index 96914885971..db15ce3a592 100644 --- a/tests/components/webostv/test_device_trigger.py +++ b/tests/components/webostv/test_device_trigger.py @@ -128,7 +128,8 @@ async def test_get_triggers_for_invalid_device_id(hass, caplog): await hass.async_block_till_done() assert ( - "Invalid config for [automation]: invalid trigger configuration" in caplog.text + "Invalid config for [automation]: Device invalid_device_id is not a valid webostv device" + in caplog.text )