"""Tests for Intent component.""" from homeassistant.setup import async_setup_component from homeassistant.helpers import intent async def test_http_handle_intent(hass, hass_client, hass_admin_user): """Test handle intent via HTTP API.""" class TestIntentHandler(intent.IntentHandler): """Test Intent Handler.""" intent_type = "OrderBeer" async def async_handle(self, intent): """Handle the intent.""" assert intent.context.user_id == hass_admin_user.id response = intent.create_response() response.async_set_speech( "I've ordered a {}!".format(intent.slots["type"]["value"]) ) response.async_set_card( "Beer ordered", "You chose a {}.".format(intent.slots["type"]["value"]) ) return response intent.async_register(hass, TestIntentHandler()) result = await async_setup_component(hass, "intent", {}) assert result client = await hass_client() resp = await client.post( "/api/intent/handle", json={"name": "OrderBeer", "data": {"type": "Belgian"}} ) assert resp.status == 200 data = await resp.json() assert data == { "card": { "simple": {"content": "You chose a Belgian.", "title": "Beer ordered"} }, "speech": {"plain": {"extra_data": None, "speech": "I've ordered a Belgian!"}}, }