Remove Home Assistant Cast user when removing entry (#44228)

* Remove Home Assistant Cast user when removing entry

* Fix test

* Fix test
This commit is contained in:
Erik Montnemery 2020-12-16 11:00:22 +01:00 committed by GitHub
parent 3bb996c5b4
commit dfde403937
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 46 additions and 0 deletions

View File

@ -29,3 +29,8 @@ async def async_setup_entry(hass, entry: config_entries.ConfigEntry):
hass.config_entries.async_forward_entry_setup(entry, "media_player")
)
return True
async def async_remove_entry(hass, entry):
"""Remove Home Assistant Cast user."""
await home_assistant_cast.async_remove_user(hass, entry)

View File

@ -72,3 +72,14 @@ async def async_setup_ha_cast(
}
),
)
async def async_remove_user(
hass: core.HomeAssistant, entry: config_entries.ConfigEntry
):
"""Remove Home Assistant Cast user."""
user_id: Optional[str] = entry.data.get("user_id")
if user_id is not None:
user = await hass.auth.async_get_user(user_id)
await hass.auth.async_remove_user(user)

View File

@ -1,5 +1,6 @@
"""Test Home Assistant Cast."""
from homeassistant import config_entries
from homeassistant.components.cast import home_assistant_cast
from homeassistant.config import async_process_ha_core_config
@ -86,3 +87,32 @@ async def test_use_cloud_url(hass, mock_zeroconf):
assert len(calls) == 1
controller = calls[0][0]
assert controller.hass_url == "https://something.nabu.casa"
async def test_remove_entry(hass, mock_zeroconf):
"""Test removing config entry removes user."""
entry = MockConfigEntry(
connection_class=config_entries.CONN_CLASS_LOCAL_PUSH,
data={},
domain="cast",
title="Google Cast",
)
entry.add_to_hass(hass)
with patch(
"homeassistant.components.cast.media_player._async_setup_platform"
), patch(
"pychromecast.discovery.discover_chromecasts", return_value=(True, None)
), patch(
"pychromecast.discovery.stop_discovery"
):
assert await hass.config_entries.async_setup(entry.entry_id)
await hass.async_block_till_done()
assert "cast" in hass.config.components
user_id = entry.data.get("user_id")
assert await hass.auth.async_get_user(user_id)
assert await hass.config_entries.async_remove(entry.entry_id)
assert not await hass.auth.async_get_user(user_id)