core/tests/components/automation/test_webhook.py

76 lines
2.0 KiB
Python

"""The tests for the webhook automation trigger."""
from homeassistant.core import callback
from homeassistant.setup import async_setup_component
async def test_webhook_json(hass, aiohttp_client):
"""Test triggering with a JSON webhook."""
events = []
@callback
def store_event(event):
"""Helepr to store events."""
events.append(event)
hass.bus.async_listen('test_success', store_event)
assert await async_setup_component(hass, 'automation', {
'automation': {
'trigger': {
'platform': 'webhook',
'webhook_id': 'json_webhook'
},
'action': {
'event': 'test_success',
'event_data_template': {
'hello': 'yo {{ trigger.json.hello }}',
}
}
}
})
client = await aiohttp_client(hass.http.app)
await client.post('/api/webhook/json_webhook', json={
'hello': 'world'
})
assert len(events) == 1
assert events[0].data['hello'] == 'yo world'
async def test_webhook_post(hass, aiohttp_client):
"""Test triggering with a POST webhook."""
events = []
@callback
def store_event(event):
"""Helepr to store events."""
events.append(event)
hass.bus.async_listen('test_success', store_event)
assert await async_setup_component(hass, 'automation', {
'automation': {
'trigger': {
'platform': 'webhook',
'webhook_id': 'post_webhook'
},
'action': {
'event': 'test_success',
'event_data_template': {
'hello': 'yo {{ trigger.data.hello }}',
}
}
}
})
client = await aiohttp_client(hass.http.app)
await client.post('/api/webhook/post_webhook', data={
'hello': 'world'
})
assert len(events) == 1
assert events[0].data['hello'] == 'yo world'