"""The tests for the hassio component.""" import aiohttp import pytest from homeassistant.components.hassio.handler import HassioAPIError async def test_api_ping(hassio_handler, aioclient_mock): """Test setup with API ping.""" aioclient_mock.get("http://127.0.0.1/supervisor/ping", json={"result": "ok"}) assert await hassio_handler.is_connected() assert aioclient_mock.call_count == 1 async def test_api_ping_error(hassio_handler, aioclient_mock): """Test setup with API ping error.""" aioclient_mock.get("http://127.0.0.1/supervisor/ping", json={"result": "error"}) assert not (await hassio_handler.is_connected()) assert aioclient_mock.call_count == 1 async def test_api_ping_exeption(hassio_handler, aioclient_mock): """Test setup with API ping exception.""" aioclient_mock.get("http://127.0.0.1/supervisor/ping", exc=aiohttp.ClientError()) assert not (await hassio_handler.is_connected()) assert aioclient_mock.call_count == 1 async def test_api_homeassistant_info(hassio_handler, aioclient_mock): """Test setup with API Home Assistant info.""" aioclient_mock.get( "http://127.0.0.1/homeassistant/info", json={"result": "ok", "data": {"last_version": "10.0"}}, ) data = await hassio_handler.get_homeassistant_info() assert aioclient_mock.call_count == 1 assert data["last_version"] == "10.0" async def test_api_homeassistant_info_error(hassio_handler, aioclient_mock): """Test setup with API Home Assistant info error.""" aioclient_mock.get( "http://127.0.0.1/homeassistant/info", json={"result": "error", "message": None} ) with pytest.raises(HassioAPIError): await hassio_handler.get_homeassistant_info() assert aioclient_mock.call_count == 1 async def test_api_homeassistant_stop(hassio_handler, aioclient_mock): """Test setup with API Home Assistant stop.""" aioclient_mock.post("http://127.0.0.1/homeassistant/stop", json={"result": "ok"}) assert await hassio_handler.stop_homeassistant() assert aioclient_mock.call_count == 1 async def test_api_homeassistant_restart(hassio_handler, aioclient_mock): """Test setup with API Home Assistant restart.""" aioclient_mock.post("http://127.0.0.1/homeassistant/restart", json={"result": "ok"}) assert await hassio_handler.restart_homeassistant() assert aioclient_mock.call_count == 1 async def test_api_addon_info(hassio_handler, aioclient_mock): """Test setup with API Add-on info.""" aioclient_mock.get( "http://127.0.0.1/addons/test/info", json={"result": "ok", "data": {"name": "bla"}}, ) data = await hassio_handler.get_addon_info("test") assert data["name"] == "bla" assert aioclient_mock.call_count == 1 async def test_api_discovery_message(hassio_handler, aioclient_mock): """Test setup with API discovery message.""" aioclient_mock.get( "http://127.0.0.1/discovery/test", json={"result": "ok", "data": {"service": "mqtt"}}, ) data = await hassio_handler.get_discovery_message("test") assert data["service"] == "mqtt" assert aioclient_mock.call_count == 1 async def test_api_retrieve_discovery(hassio_handler, aioclient_mock): """Test setup with API discovery message.""" aioclient_mock.get( "http://127.0.0.1/discovery", json={"result": "ok", "data": {"discovery": [{"service": "mqtt"}]}}, ) data = await hassio_handler.retrieve_discovery_messages() assert data["discovery"][-1]["service"] == "mqtt" assert aioclient_mock.call_count == 1 async def test_api_ingress_panels(hassio_handler, aioclient_mock): """Test setup with API Ingress panels.""" aioclient_mock.get( "http://127.0.0.1/ingress/panels", json={ "result": "ok", "data": { "panels": { "slug": { "enable": True, "title": "Test", "icon": "mdi:test", "admin": False, } } }, }, ) data = await hassio_handler.get_ingress_panels() assert aioclient_mock.call_count == 1 assert data["panels"] assert "slug" in data["panels"]