diff --git a/homeassistant/components/tts/notify.py b/homeassistant/components/tts/notify.py index 92244fc41f9..c2576e12bb5 100644 --- a/homeassistant/components/tts/notify.py +++ b/homeassistant/components/tts/notify.py @@ -20,16 +20,19 @@ ENTITY_LEGACY_PROVIDER_GROUP = "entity_or_legacy_provider" _LOGGER = logging.getLogger(__name__) -PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( - { - vol.Required(CONF_NAME): cv.string, - vol.Exclusive(CONF_TTS_SERVICE, ENTITY_LEGACY_PROVIDER_GROUP): cv.entity_id, - vol.Exclusive(CONF_ENTITY_ID, ENTITY_LEGACY_PROVIDER_GROUP): cv.entities_domain( - DOMAIN - ), - vol.Required(CONF_MEDIA_PLAYER): cv.entity_id, - vol.Optional(ATTR_LANGUAGE): cv.string, - } +PLATFORM_SCHEMA = vol.All( + cv.has_at_least_one_key(CONF_TTS_SERVICE, CONF_ENTITY_ID), + PLATFORM_SCHEMA.extend( + { + vol.Required(CONF_NAME): cv.string, + vol.Exclusive(CONF_TTS_SERVICE, ENTITY_LEGACY_PROVIDER_GROUP): cv.entity_id, + vol.Exclusive( + CONF_ENTITY_ID, ENTITY_LEGACY_PROVIDER_GROUP + ): cv.entities_domain(DOMAIN), + vol.Required(CONF_MEDIA_PLAYER): cv.entity_id, + vol.Optional(ATTR_LANGUAGE): cv.string, + } + ), ) diff --git a/tests/components/tts/test_notify.py b/tests/components/tts/test_notify.py index 22ab151b864..1a776140457 100644 --- a/tests/components/tts/test_notify.py +++ b/tests/components/tts/test_notify.py @@ -68,6 +68,21 @@ async def test_setup_platform(hass: HomeAssistant) -> None: assert hass.services.has_service(notify.DOMAIN, "tts_test") +async def test_setup_platform_missing_key(hass: HomeAssistant) -> None: + """Test platform without required tts_service or entity_id key.""" + config = { + notify.DOMAIN: { + "platform": "tts", + "name": "tts_test", + "media_player": "media_player.demo", + } + } + with assert_setup_component(0, notify.DOMAIN): + assert await async_setup_component(hass, notify.DOMAIN, config) + + assert not hass.services.has_service(notify.DOMAIN, "tts_test") + + async def test_setup_legacy_service(hass: HomeAssistant) -> None: """Set up the demo platform and call service.""" calls = async_mock_service(hass, DOMAIN_MP, SERVICE_PLAY_MEDIA)