Bump aioshelly library to version 0.3.3 (#40415)

This commit is contained in:
Maciej Bieniek 2020-09-26 22:39:02 +02:00 committed by GitHub
parent 8837ed35cd
commit b8f837365c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 42 additions and 16 deletions

View File

@ -62,6 +62,8 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
info = await self._async_get_info(host) info = await self._async_get_info(host)
except HTTP_CONNECT_ERRORS: except HTTP_CONNECT_ERRORS:
errors["base"] = "cannot_connect" errors["base"] = "cannot_connect"
except aioshelly.FirmwareUnsupported:
return self.async_abort(reason="unsupported_firmware")
except Exception: # pylint: disable=broad-except except Exception: # pylint: disable=broad-except
_LOGGER.exception("Unexpected exception") _LOGGER.exception("Unexpected exception")
errors["base"] = "unknown" errors["base"] = "unknown"
@ -133,6 +135,8 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
self.info = info = await self._async_get_info(zeroconf_info["host"]) self.info = info = await self._async_get_info(zeroconf_info["host"])
except HTTP_CONNECT_ERRORS: except HTTP_CONNECT_ERRORS:
return self.async_abort(reason="cannot_connect") return self.async_abort(reason="cannot_connect")
except aioshelly.FirmwareUnsupported:
return self.async_abort(reason="unsupported_firmware")
await self.async_set_unique_id(info["mac"]) await self.async_set_unique_id(info["mac"])
self._abort_if_unique_id_configured({CONF_HOST: zeroconf_info["host"]}) self._abort_if_unique_id_configured({CONF_HOST: zeroconf_info["host"]})

View File

@ -3,7 +3,7 @@
"name": "Shelly", "name": "Shelly",
"config_flow": true, "config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/shelly", "documentation": "https://www.home-assistant.io/integrations/shelly",
"requirements": ["aioshelly==0.3.2"], "requirements": ["aioshelly==0.3.3"],
"zeroconf": [{"type": "_http._tcp.local.", "name":"shelly*"}], "zeroconf": [{"type": "_http._tcp.local.", "name":"shelly*"}],
"codeowners": ["@balloob", "@bieniu"] "codeowners": ["@balloob", "@bieniu"]
} }

View File

@ -24,7 +24,8 @@
"unknown": "[%key:common::config_flow::error::unknown%]" "unknown": "[%key:common::config_flow::error::unknown%]"
}, },
"abort": { "abort": {
"already_configured": "[%key:common::config_flow::abort::already_configured_device%]" "already_configured": "[%key:common::config_flow::abort::already_configured_device%]",
"unsupported_firmware": "The device is using an unsupported firmware version."
} }
} }
} }

View File

@ -221,7 +221,7 @@ aiopvpc==2.0.2
aiopylgtv==0.3.3 aiopylgtv==0.3.3
# homeassistant.components.shelly # homeassistant.components.shelly
aioshelly==0.3.2 aioshelly==0.3.3
# homeassistant.components.switcher_kis # homeassistant.components.switcher_kis
aioswitcher==1.2.1 aioswitcher==1.2.1

View File

@ -134,7 +134,7 @@ aiopvpc==2.0.2
aiopylgtv==0.3.3 aiopylgtv==0.3.3
# homeassistant.components.shelly # homeassistant.components.shelly
aioshelly==0.3.2 aioshelly==0.3.3
# homeassistant.components.switcher_kis # homeassistant.components.switcher_kis
aioswitcher==1.2.1 aioswitcher==1.2.1

View File

@ -2,6 +2,7 @@
import asyncio import asyncio
import aiohttp import aiohttp
import aioshelly
import pytest import pytest
from homeassistant import config_entries, setup from homeassistant import config_entries, setup
@ -113,10 +114,7 @@ async def test_form_errors_get_info(hass, error):
DOMAIN, context={"source": config_entries.SOURCE_USER} DOMAIN, context={"source": config_entries.SOURCE_USER}
) )
with patch( with patch("aioshelly.get_info", side_effect=exc):
"aioshelly.get_info",
side_effect=exc,
):
result2 = await hass.config_entries.flow.async_configure( result2 = await hass.config_entries.flow.async_configure(
result["flow_id"], result["flow_id"],
{"host": "1.1.1.1"}, {"host": "1.1.1.1"},
@ -138,10 +136,7 @@ async def test_form_errors_test_connection(hass, error):
with patch( with patch(
"aioshelly.get_info", return_value={"mac": "test-mac", "auth": False} "aioshelly.get_info", return_value={"mac": "test-mac", "auth": False}
), patch( ), patch("aioshelly.Device.create", new=AsyncMock(side_effect=exc)):
"aioshelly.Device.create",
new=AsyncMock(side_effect=exc),
):
result2 = await hass.config_entries.flow.async_configure( result2 = await hass.config_entries.flow.async_configure(
result["flow_id"], result["flow_id"],
{"host": "1.1.1.1"}, {"host": "1.1.1.1"},
@ -179,6 +174,22 @@ async def test_form_already_configured(hass):
assert entry.data["host"] == "1.1.1.1" assert entry.data["host"] == "1.1.1.1"
async def test_form_firmware_unsupported(hass):
"""Test we abort if device firmware is unsupported."""
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER}
)
with patch("aioshelly.get_info", side_effect=aioshelly.FirmwareUnsupported):
result2 = await hass.config_entries.flow.async_configure(
result["flow_id"],
{"host": "1.1.1.1"},
)
assert result2["type"] == "abort"
assert result2["reason"] == "unsupported_firmware"
@pytest.mark.parametrize( @pytest.mark.parametrize(
"error", "error",
[ [
@ -315,12 +326,22 @@ async def test_zeroconf_already_configured(hass):
assert entry.data["host"] == "1.1.1.1" assert entry.data["host"] == "1.1.1.1"
async def test_zeroconf_firmware_unsupported(hass):
"""Test we abort if device firmware is unsupported."""
with patch("aioshelly.get_info", side_effect=aioshelly.FirmwareUnsupported):
result = await hass.config_entries.flow.async_init(
DOMAIN,
data={"host": "1.1.1.1", "name": "shelly1pm-12345"},
context={"source": config_entries.SOURCE_ZEROCONF},
)
assert result["type"] == "abort"
assert result["reason"] == "unsupported_firmware"
async def test_zeroconf_cannot_connect(hass): async def test_zeroconf_cannot_connect(hass):
"""Test we get the form.""" """Test we get the form."""
with patch( with patch("aioshelly.get_info", side_effect=asyncio.TimeoutError):
"aioshelly.get_info",
side_effect=asyncio.TimeoutError,
):
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, DOMAIN,
data={"host": "1.1.1.1", "name": "shelly1pm-12345"}, data={"host": "1.1.1.1", "name": "shelly1pm-12345"},