mirror of
https://github.com/home-assistant/core.git
synced 2025-12-24 21:06:19 +00:00
Catch ConnectionResetError when updating data in Cert expiry integration (#155149)
This commit is contained in:
@@ -14,6 +14,7 @@ from homeassistant.const import CONF_HOST, CONF_PORT
|
||||
from .const import DEFAULT_PORT, DOMAIN
|
||||
from .errors import (
|
||||
ConnectionRefused,
|
||||
ConnectionReset,
|
||||
ConnectionTimeout,
|
||||
ResolveFailed,
|
||||
ValidationFailure,
|
||||
@@ -49,6 +50,8 @@ class CertexpiryConfigFlow(ConfigFlow, domain=DOMAIN):
|
||||
self._errors[CONF_HOST] = "connection_timeout"
|
||||
except ConnectionRefused:
|
||||
self._errors[CONF_HOST] = "connection_refused"
|
||||
except ConnectionReset:
|
||||
self._errors[CONF_HOST] = "connection_reset"
|
||||
except ValidationFailure:
|
||||
return True
|
||||
else:
|
||||
|
||||
@@ -25,3 +25,7 @@ class ConnectionTimeout(TemporaryFailure):
|
||||
|
||||
class ConnectionRefused(TemporaryFailure):
|
||||
"""Network connection refused."""
|
||||
|
||||
|
||||
class ConnectionReset(TemporaryFailure):
|
||||
"""Network connection reset."""
|
||||
|
||||
@@ -13,6 +13,7 @@ from homeassistant.util.ssl import get_default_context
|
||||
from .const import TIMEOUT
|
||||
from .errors import (
|
||||
ConnectionRefused,
|
||||
ConnectionReset,
|
||||
ConnectionTimeout,
|
||||
ResolveFailed,
|
||||
ValidationFailure,
|
||||
@@ -58,6 +59,8 @@ async def get_cert_expiry_timestamp(
|
||||
raise ConnectionRefused(
|
||||
f"Connection refused by server: {hostname}:{port}"
|
||||
) from err
|
||||
except ConnectionResetError as err:
|
||||
raise ConnectionReset(f"Connection reset by server: {hostname}:{port}") from err
|
||||
except ssl.CertificateError as err:
|
||||
raise ValidationFailure(err.verify_message) from err
|
||||
except ssl.SSLError as err:
|
||||
|
||||
@@ -14,7 +14,8 @@
|
||||
"error": {
|
||||
"resolve_failed": "This host cannot be resolved",
|
||||
"connection_timeout": "Timeout when connecting to this host",
|
||||
"connection_refused": "Connection refused when connecting to host"
|
||||
"connection_refused": "Connection refused when connecting to host",
|
||||
"connection_reset": "Connection reset when connecting to host"
|
||||
},
|
||||
"abort": {
|
||||
"already_configured": "[%key:common::config_flow::abort::already_configured_service%]",
|
||||
|
||||
@@ -115,3 +115,13 @@ async def test_abort_on_socket_failed(hass: HomeAssistant) -> None:
|
||||
)
|
||||
assert result["type"] is FlowResultType.FORM
|
||||
assert result["errors"] == {CONF_HOST: "connection_refused"}
|
||||
|
||||
with patch(
|
||||
"homeassistant.components.cert_expiry.helper.async_get_cert",
|
||||
side_effect=ConnectionResetError,
|
||||
):
|
||||
result = await hass.config_entries.flow.async_configure(
|
||||
result["flow_id"], user_input={CONF_HOST: HOST}
|
||||
)
|
||||
assert result["type"] is FlowResultType.FORM
|
||||
assert result["errors"] == {CONF_HOST: "connection_reset"}
|
||||
|
||||
Reference in New Issue
Block a user