Skip to content

Commit 3c75191

Browse files
authored
Catch ConnectionResetError when updating data in Cert expiry integration (home-assistant#155149)
1 parent a3c8760 commit 3c75191

File tree

5 files changed

+22
-1
lines changed

5 files changed

+22
-1
lines changed

homeassistant/components/cert_expiry/config_flow.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from .const import DEFAULT_PORT, DOMAIN
1515
from .errors import (
1616
ConnectionRefused,
17+
ConnectionReset,
1718
ConnectionTimeout,
1819
ResolveFailed,
1920
ValidationFailure,
@@ -49,6 +50,8 @@ async def _test_connection(
4950
self._errors[CONF_HOST] = "connection_timeout"
5051
except ConnectionRefused:
5152
self._errors[CONF_HOST] = "connection_refused"
53+
except ConnectionReset:
54+
self._errors[CONF_HOST] = "connection_reset"
5255
except ValidationFailure:
5356
return True
5457
else:

homeassistant/components/cert_expiry/errors.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,7 @@ class ConnectionTimeout(TemporaryFailure):
2525

2626
class ConnectionRefused(TemporaryFailure):
2727
"""Network connection refused."""
28+
29+
30+
class ConnectionReset(TemporaryFailure):
31+
"""Network connection reset."""

homeassistant/components/cert_expiry/helper.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from .const import TIMEOUT
1414
from .errors import (
1515
ConnectionRefused,
16+
ConnectionReset,
1617
ConnectionTimeout,
1718
ResolveFailed,
1819
ValidationFailure,
@@ -58,6 +59,8 @@ async def get_cert_expiry_timestamp(
5859
raise ConnectionRefused(
5960
f"Connection refused by server: {hostname}:{port}"
6061
) from err
62+
except ConnectionResetError as err:
63+
raise ConnectionReset(f"Connection reset by server: {hostname}:{port}") from err
6164
except ssl.CertificateError as err:
6265
raise ValidationFailure(err.verify_message) from err
6366
except ssl.SSLError as err:

homeassistant/components/cert_expiry/strings.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
"error": {
1515
"resolve_failed": "This host cannot be resolved",
1616
"connection_timeout": "Timeout when connecting to this host",
17-
"connection_refused": "Connection refused when connecting to host"
17+
"connection_refused": "Connection refused when connecting to host",
18+
"connection_reset": "Connection reset when connecting to host"
1819
},
1920
"abort": {
2021
"already_configured": "[%key:common::config_flow::abort::already_configured_service%]",

tests/components/cert_expiry/test_config_flow.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,3 +115,13 @@ async def test_abort_on_socket_failed(hass: HomeAssistant) -> None:
115115
)
116116
assert result["type"] is FlowResultType.FORM
117117
assert result["errors"] == {CONF_HOST: "connection_refused"}
118+
119+
with patch(
120+
"homeassistant.components.cert_expiry.helper.async_get_cert",
121+
side_effect=ConnectionResetError,
122+
):
123+
result = await hass.config_entries.flow.async_configure(
124+
result["flow_id"], user_input={CONF_HOST: HOST}
125+
)
126+
assert result["type"] is FlowResultType.FORM
127+
assert result["errors"] == {CONF_HOST: "connection_reset"}

0 commit comments

Comments
 (0)