Add common strings in daikin config flow (#41419)

This commit is contained in:
Fredrik Erlandsson 2020-10-08 21:25:54 +02:00 committed by GitHub
parent cf83c6bf00
commit f42eca3fcf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 21 additions and 22 deletions

View file

@ -9,7 +9,7 @@ from pydaikin.daikin_base import Appliance
import voluptuous as vol import voluptuous as vol
from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry
from homeassistant.const import CONF_HOST, CONF_HOSTS, CONF_PASSWORD from homeassistant.const import CONF_API_KEY, CONF_HOST, CONF_HOSTS, CONF_PASSWORD
from homeassistant.exceptions import ConfigEntryNotReady from homeassistant.exceptions import ConfigEntryNotReady
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC
@ -17,7 +17,7 @@ from homeassistant.helpers.typing import HomeAssistantType
from homeassistant.util import Throttle from homeassistant.util import Throttle
from . import config_flow # noqa: F401 from . import config_flow # noqa: F401
from .const import CONF_KEY, CONF_UUID, KEY_MAC, TIMEOUT from .const import CONF_UUID, KEY_MAC, TIMEOUT
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -77,7 +77,7 @@ async def async_setup_entry(hass: HomeAssistantType, entry: ConfigEntry):
daikin_api = await daikin_api_setup( daikin_api = await daikin_api_setup(
hass, hass,
conf[CONF_HOST], conf[CONF_HOST],
conf.get(CONF_KEY), conf.get(CONF_API_KEY),
conf.get(CONF_UUID), conf.get(CONF_UUID),
conf.get(CONF_PASSWORD), conf.get(CONF_PASSWORD),
) )

View file

@ -10,9 +10,9 @@ from pydaikin.discovery import Discovery
import voluptuous as vol import voluptuous as vol
from homeassistant import config_entries from homeassistant import config_entries
from homeassistant.const import CONF_HOST, CONF_PASSWORD from homeassistant.const import CONF_API_KEY, CONF_HOST, CONF_PASSWORD
from .const import CONF_KEY, CONF_UUID, KEY_IP, KEY_MAC, TIMEOUT from .const import CONF_UUID, KEY_IP, KEY_MAC, TIMEOUT
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -34,7 +34,7 @@ class FlowHandler(config_entries.ConfigFlow):
return vol.Schema( return vol.Schema(
{ {
vol.Required(CONF_HOST, default=self.host): str, vol.Required(CONF_HOST, default=self.host): str,
vol.Optional(CONF_KEY): str, vol.Optional(CONF_API_KEY): str,
vol.Optional(CONF_PASSWORD): str, vol.Optional(CONF_PASSWORD): str,
} }
) )
@ -50,7 +50,7 @@ class FlowHandler(config_entries.ConfigFlow):
data={ data={
CONF_HOST: host, CONF_HOST: host,
KEY_MAC: mac, KEY_MAC: mac,
CONF_KEY: key, CONF_API_KEY: key,
CONF_UUID: uuid, CONF_UUID: uuid,
CONF_PASSWORD: password, CONF_PASSWORD: password,
}, },
@ -81,27 +81,27 @@ class FlowHandler(config_entries.ConfigFlow):
return self.async_show_form( return self.async_show_form(
step_id="user", step_id="user",
data_schema=self.schema, data_schema=self.schema,
errors={"base": "device_timeout"}, errors={"base": "cannot_connect"},
) )
except web_exceptions.HTTPForbidden: except web_exceptions.HTTPForbidden:
return self.async_show_form( return self.async_show_form(
step_id="user", step_id="user",
data_schema=self.schema, data_schema=self.schema,
errors={"base": "forbidden"}, errors={"base": "invalid_auth"},
) )
except ClientError: except ClientError:
_LOGGER.exception("ClientError") _LOGGER.exception("ClientError")
return self.async_show_form( return self.async_show_form(
step_id="user", step_id="user",
data_schema=self.schema, data_schema=self.schema,
errors={"base": "device_fail"}, errors={"base": "unknown"},
) )
except Exception: # pylint: disable=broad-except except Exception: # pylint: disable=broad-except
_LOGGER.exception("Unexpected error creating device") _LOGGER.exception("Unexpected error creating device")
return self.async_show_form( return self.async_show_form(
step_id="user", step_id="user",
data_schema=self.schema, data_schema=self.schema,
errors={"base": "device_fail"}, errors={"base": "unknown"},
) )
mac = device.mac mac = device.mac
@ -113,7 +113,7 @@ class FlowHandler(config_entries.ConfigFlow):
return self.async_show_form(step_id="user", data_schema=self.schema) return self.async_show_form(step_id="user", data_schema=self.schema)
return await self._create_device( return await self._create_device(
user_input[CONF_HOST], user_input[CONF_HOST],
user_input.get(CONF_KEY), user_input.get(CONF_API_KEY),
user_input.get(CONF_PASSWORD), user_input.get(CONF_PASSWORD),
) )

View file

@ -76,7 +76,6 @@ SENSOR_TYPES = {
}, },
} }
CONF_KEY = "key"
CONF_UUID = "uuid" CONF_UUID = "uuid"
KEY_MAC = "mac" KEY_MAC = "mac"

View file

@ -3,10 +3,10 @@
"step": { "step": {
"user": { "user": {
"title": "Configure Daikin AC", "title": "Configure Daikin AC",
"description": "Enter IP address of your Daikin AC.\n\nNote that [%key:common::config_flow::data::api_key%] and [%key:common::config_flow::data::password%] are used by BRP072Cxx and SKYFi devices respectively.", "description": "Enter [%key:common::config_flow::data::ip%] of your Daikin AC.\n\nNote that [%key:common::config_flow::data::api_key%] and [%key:common::config_flow::data::password%] only are used by BRP072Cxx and SKYFi devices respectively.",
"data": { "data": {
"host": "[%key:common::config_flow::data::host%]", "host": "[%key:common::config_flow::data::host%]",
"key": "[%key:common::config_flow::data::api_key%]", "api_key": "[%key:common::config_flow::data::api_key%]",
"password": "[%key:common::config_flow::data::password%]" "password": "[%key:common::config_flow::data::password%]"
} }
} }
@ -16,9 +16,9 @@
"cannot_connect": "[%key:common::config_flow::error::cannot_connect%]" "cannot_connect": "[%key:common::config_flow::error::cannot_connect%]"
}, },
"error": { "error": {
"device_fail": "[%key:common::config_flow::error::unknown%]", "unknown": "[%key:common::config_flow::error::unknown%]",
"forbidden": "[%key:common::config_flow::error::invalid_auth%]", "invalid_auth": "[%key:common::config_flow::error::invalid_auth%]",
"device_timeout": "[%key:common::config_flow::error::cannot_connect%]" "cannot_connect": "[%key:common::config_flow::error::cannot_connect%]"
} }
} }
} }

View file

@ -109,10 +109,10 @@ async def test_import(hass, mock_daikin):
@pytest.mark.parametrize( @pytest.mark.parametrize(
"s_effect,reason", "s_effect,reason",
[ [
(asyncio.TimeoutError, "device_timeout"), (asyncio.TimeoutError, "cannot_connect"),
(HTTPForbidden, "forbidden"), (HTTPForbidden, "invalid_auth"),
(ClientError, "device_fail"), (ClientError, "unknown"),
(Exception, "device_fail"), (Exception, "unknown"),
], ],
) )
async def test_device_abort(hass, mock_daikin, s_effect, reason): async def test_device_abort(hass, mock_daikin, s_effect, reason):