From f5c35ac0c1f0dbe87d7c38839346107b86b64078 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Wed, 4 Jan 2023 14:36:41 +0100 Subject: [PATCH] Handle zone exception when setting up Cloudflare (#85110) --- homeassistant/components/cloudflare/__init__.py | 3 ++- tests/components/cloudflare/test_init.py | 12 ++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/cloudflare/__init__.py b/homeassistant/components/cloudflare/__init__.py index 3a8f6b39ae7..9608347c8e7 100644 --- a/homeassistant/components/cloudflare/__init__.py +++ b/homeassistant/components/cloudflare/__init__.py @@ -10,6 +10,7 @@ from pycfdns.exceptions import ( CloudflareAuthenticationException, CloudflareConnectionException, CloudflareException, + CloudflareZoneException, ) from homeassistant.config_entries import ConfigEntry @@ -47,7 +48,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: zone_id = await cfupdate.get_zone_id() except CloudflareAuthenticationException as error: raise ConfigEntryAuthFailed from error - except CloudflareConnectionException as error: + except (CloudflareConnectionException, CloudflareZoneException) as error: raise ConfigEntryNotReady from error async def update_records(now): diff --git a/tests/components/cloudflare/test_init.py b/tests/components/cloudflare/test_init.py index 6e7f450d711..c476b3ef376 100644 --- a/tests/components/cloudflare/test_init.py +++ b/tests/components/cloudflare/test_init.py @@ -4,6 +4,7 @@ from unittest.mock import patch from pycfdns.exceptions import ( CloudflareAuthenticationException, CloudflareConnectionException, + CloudflareZoneException, ) import pytest @@ -31,14 +32,21 @@ async def test_unload_entry(hass, cfupdate): assert not hass.data.get(DOMAIN) -async def test_async_setup_raises_entry_not_ready(hass, cfupdate): +@pytest.mark.parametrize( + "side_effect", + ( + CloudflareConnectionException(), + CloudflareZoneException(), + ), +) +async def test_async_setup_raises_entry_not_ready(hass, cfupdate, side_effect): """Test that it throws ConfigEntryNotReady when exception occurs during setup.""" instance = cfupdate.return_value entry = MockConfigEntry(domain=DOMAIN, data=ENTRY_CONFIG) entry.add_to_hass(hass) - instance.get_zone_id.side_effect = CloudflareConnectionException() + instance.get_zone_id.side_effect = side_effect await hass.config_entries.async_setup(entry.entry_id) assert entry.state is ConfigEntryState.SETUP_RETRY