1
0
mirror of https://github.com/home-assistant/core.git synced 2025-12-26 22:18:40 +00:00
Files
core/tests/components/hassio/test_discovery.py
Pascal Vizeli 704c9d8582 Add support for Hass.io discovery feature for Add-ons (#17035)
* Update handler.py

* Update __init__.py

* Update handler.py

* Update __init__.py

* Create discovery.py

* Update handler.py

* Update discovery.py

* Update __init__.py

* Update discovery.py

* Update discovery.py

* Update discovery.py

* Update struct

* Update handler.py

* Update discovery.py

* Update discovery.py

* Update discovery.py

* Update __init__.py

* Update discovery.py

* Update discovery.py

* Update discovery.py

* Update discovery.py

* Update discovery.py

* Update discovery.py

* Update discovery.py

* Update discovery.py

* Update __init__.py

* Update discovery.py

* fix lint

* Update discovery.py

* cleanup old discovery

* Update discovery.py

* Update discovery.py

* Fix lint

* Fix tests

* Write more tests with new functions

* Update test_handler.py

* Create test_discovery.py

* Update conftest.py

* Update test_discovery.py

* Update conftest.py

* Update test_discovery.py

* Update conftest.py

* Update test_discovery.py

* Update test_discovery.py

* Update test_discovery.py

* Update test_discovery.py

* Update test_discovery.py

* Fix test

* Add test

* fix lint

* Update handler.py

* Update discovery.py

* Update test_discovery.py

* fix lint

* Lint
2018-10-03 13:10:38 +02:00

89 lines
3.2 KiB
Python

"""Test config flow."""
from unittest.mock import patch, Mock
from homeassistant.const import EVENT_HOMEASSISTANT_START, HTTP_HEADER_HA_AUTH
from tests.common import mock_coro
from . import API_PASSWORD
async def test_hassio_discovery_startup(hass, aioclient_mock, hassio_client):
"""Test startup and discovery after event."""
aioclient_mock.get(
"http://127.0.0.1/discovery", json={
'result': 'ok', 'data': {'discovery': [
{
"service": "mqtt", "uuid": "test",
"addon": "mosquitto", "config":
{
'broker': 'mock-broker',
'port': 1883,
'username': 'mock-user',
'password': 'mock-pass',
'protocol': '3.1.1'
}
}
]}})
aioclient_mock.get(
"http://127.0.0.1/addons/mosquitto/info", json={
'result': 'ok', 'data': {'name': "Mosquitto Test"}
})
with patch('homeassistant.components.mqtt.'
'config_flow.FlowHandler.async_step_hassio',
Mock(return_value=mock_coro({"type": "abort"}))) as mock_mqtt:
hass.bus.async_fire(EVENT_HOMEASSISTANT_START)
await hass.async_block_till_done()
assert aioclient_mock.call_count == 2
assert mock_mqtt.called
mock_mqtt.assert_called_with({
'broker': 'mock-broker', 'port': 1883, 'username': 'mock-user',
'password': 'mock-pass', 'protocol': '3.1.1',
'addon': 'Mosquitto Test',
})
async def test_hassio_discovery_webhook(hass, aioclient_mock, hassio_client):
"""Test discovery webhook."""
aioclient_mock.get(
"http://127.0.0.1/discovery/testuuid", json={
'result': 'ok', 'data':
{
"service": "mqtt", "uuid": "test",
"addon": "mosquitto", "config":
{
'broker': 'mock-broker',
'port': 1883,
'username': 'mock-user',
'password': 'mock-pass',
'protocol': '3.1.1'
}
}
})
aioclient_mock.get(
"http://127.0.0.1/addons/mosquitto/info", json={
'result': 'ok', 'data': {'name': "Mosquitto Test"}
})
with patch('homeassistant.components.mqtt.'
'config_flow.FlowHandler.async_step_hassio',
Mock(return_value=mock_coro({"type": "abort"}))) as mock_mqtt:
resp = await hassio_client.post(
'/api/hassio_push/discovery/testuuid', headers={
HTTP_HEADER_HA_AUTH: API_PASSWORD
}, json={
"addon": "mosquitto", "service": "mqtt", "uuid": "testuuid"
}
)
await hass.async_block_till_done()
assert resp.status == 200
assert aioclient_mock.call_count == 2
assert mock_mqtt.called
mock_mqtt.assert_called_with({
'broker': 'mock-broker', 'port': 1883, 'username': 'mock-user',
'password': 'mock-pass', 'protocol': '3.1.1',
'addon': 'Mosquitto Test',
})