From 0a717f313eaae0a06420fb698891746e03366f0e Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 13 Nov 2020 13:31:43 +0100 Subject: [PATCH] Improve entity domain validator (#43164) --- homeassistant/helpers/config_validation.py | 7 +++++-- tests/helpers/test_config_validation.py | 7 ++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/homeassistant/helpers/config_validation.py b/homeassistant/helpers/config_validation.py index 5b2ad0da2ac..af42b6373ba 100644 --- a/homeassistant/helpers/config_validation.py +++ b/homeassistant/helpers/config_validation.py @@ -286,9 +286,12 @@ def entity_domain(domain: Union[str, List[str]]) -> Callable[[Any], str]: """Validate that entity belong to domain.""" ent_domain = entities_domain(domain) - def validate(value: Any) -> str: + def validate(value: str) -> str: """Test if entity domain is domain.""" - return ent_domain(value)[0] + validated = ent_domain(value) + if len(validated) != 1: + raise vol.Invalid(f"Expected exactly 1 entity, got {len(validated)}") + return validated[0] return validate diff --git a/tests/helpers/test_config_validation.py b/tests/helpers/test_config_validation.py index c829d4413f0..7693efbb926 100644 --- a/tests/helpers/test_config_validation.py +++ b/tests/helpers/test_config_validation.py @@ -179,7 +179,12 @@ def test_entity_domain(): """Test entity domain validation.""" schema = vol.Schema(cv.entity_domain("sensor")) - for value in ("invalid_entity", "cover.demo"): + for value in ( + "invalid_entity", + "cover.demo", + "cover.demo,sensor.another_entity", + "", + ): with pytest.raises(vol.MultipleInvalid): schema(value)