diff --git a/homeassistant/components/bmw_connected_drive/coordinator.py b/homeassistant/components/bmw_connected_drive/coordinator.py index 14875c54719..6e0ed2ab670 100644 --- a/homeassistant/components/bmw_connected_drive/coordinator.py +++ b/homeassistant/components/bmw_connected_drive/coordinator.py @@ -50,6 +50,9 @@ class BMWDataUpdateCoordinator(DataUpdateCoordinator[None]): update_interval=timedelta(seconds=SCAN_INTERVALS[entry.data[CONF_REGION]]), ) + # Default to false on init so _async_update_data logic works + self.last_update_success = False + async def _async_update_data(self) -> None: """Fetch data from BMW.""" old_refresh_token = self.account.refresh_token diff --git a/tests/components/bmw_connected_drive/test_coordinator.py b/tests/components/bmw_connected_drive/test_coordinator.py index c449a9c4a59..862ff0cba55 100644 --- a/tests/components/bmw_connected_drive/test_coordinator.py +++ b/tests/components/bmw_connected_drive/test_coordinator.py @@ -7,8 +7,10 @@ from bimmer_connected.models import MyBMWAPIError, MyBMWAuthError from freezegun.api import FrozenDateTimeFactory import respx -from homeassistant.core import HomeAssistant +from homeassistant.components.bmw_connected_drive import DOMAIN as BMW_DOMAIN +from homeassistant.core import DOMAIN as HA_DOMAIN, HomeAssistant from homeassistant.exceptions import ConfigEntryAuthFailed +from homeassistant.helpers.issue_registry import IssueRegistry from homeassistant.helpers.update_coordinator import UpdateFailed from . import FIXTURE_CONFIG_ENTRY @@ -92,3 +94,29 @@ async def test_update_reauth( assert coordinator.last_update_success is False assert isinstance(coordinator.last_exception, ConfigEntryAuthFailed) is True + + +async def test_init_reauth( + hass: HomeAssistant, + bmw_fixture: respx.Router, + freezer: FrozenDateTimeFactory, + issue_registry: IssueRegistry, +) -> None: + """Test the reauth form.""" + + config_entry = MockConfigEntry(**FIXTURE_CONFIG_ENTRY) + config_entry.add_to_hass(hass) + + assert len(issue_registry.issues) == 0 + + with patch( + "bimmer_connected.account.MyBMWAccount.get_vehicles", + side_effect=MyBMWAuthError("Test error"), + ): + await hass.config_entries.async_setup(config_entry.entry_id) + await hass.async_block_till_done() + + reauth_issue = issue_registry.async_get_issue( + HA_DOMAIN, f"config_entry_reauth_{BMW_DOMAIN}_{config_entry.entry_id}" + ) + assert reauth_issue.active is True