mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Fix exception when logging out from cloud (#114306)
* Fix exception when logging out from cloud * Add test
This commit is contained in:
parent
a9fd4e45cd
commit
23e9be756d
@ -400,7 +400,11 @@ class CloudGoogleConfig(AbstractConfig):
|
|||||||
@callback
|
@callback
|
||||||
def async_get_agent_users(self) -> tuple:
|
def async_get_agent_users(self) -> tuple:
|
||||||
"""Return known agent users."""
|
"""Return known agent users."""
|
||||||
if not self._prefs.google_connected or not self._cloud.username:
|
if (
|
||||||
|
not self._cloud.is_logged_in # Can't call Cloud.username if not logged in
|
||||||
|
or not self._prefs.google_connected
|
||||||
|
or not self._cloud.username
|
||||||
|
):
|
||||||
return ()
|
return ()
|
||||||
return (self._cloud.username,)
|
return (self._cloud.username,)
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
"""Test the Cloud Google Config."""
|
"""Test the Cloud Google Config."""
|
||||||
|
|
||||||
from http import HTTPStatus
|
from http import HTTPStatus
|
||||||
from unittest.mock import Mock, patch
|
from unittest.mock import Mock, PropertyMock, patch
|
||||||
|
|
||||||
from freezegun import freeze_time
|
from freezegun import freeze_time
|
||||||
import pytest
|
import pytest
|
||||||
@ -865,3 +865,43 @@ async def test_google_config_get_agent_user_id(
|
|||||||
== config.agent_user_id
|
== config.agent_user_id
|
||||||
)
|
)
|
||||||
assert config.get_agent_user_id_from_webhook("other_id") != config.agent_user_id
|
assert config.get_agent_user_id_from_webhook("other_id") != config.agent_user_id
|
||||||
|
|
||||||
|
|
||||||
|
async def test_google_config_get_agent_users(
|
||||||
|
hass: HomeAssistant, mock_cloud_login, cloud_prefs
|
||||||
|
) -> None:
|
||||||
|
"""Test overridden async_get_agent_users method."""
|
||||||
|
username_mock = PropertyMock(return_value="blah")
|
||||||
|
|
||||||
|
# We should not call Cloud.username when not logged in
|
||||||
|
cloud_prefs._prefs["google_connected"] = True
|
||||||
|
assert cloud_prefs.google_connected
|
||||||
|
mock_cloud = Mock(is_logged_in=False)
|
||||||
|
type(mock_cloud).username = username_mock
|
||||||
|
config = CloudGoogleConfig(
|
||||||
|
hass, GACTIONS_SCHEMA({}), "mock-user-id", cloud_prefs, mock_cloud
|
||||||
|
)
|
||||||
|
assert config.async_get_agent_users() == ()
|
||||||
|
username_mock.assert_not_called()
|
||||||
|
|
||||||
|
# We should not call Cloud.username when not connected
|
||||||
|
cloud_prefs._prefs["google_connected"] = False
|
||||||
|
assert not cloud_prefs.google_connected
|
||||||
|
mock_cloud = Mock(is_logged_in=True)
|
||||||
|
type(mock_cloud).username = username_mock
|
||||||
|
config = CloudGoogleConfig(
|
||||||
|
hass, GACTIONS_SCHEMA({}), "mock-user-id", cloud_prefs, mock_cloud
|
||||||
|
)
|
||||||
|
assert config.async_get_agent_users() == ()
|
||||||
|
username_mock.assert_not_called()
|
||||||
|
|
||||||
|
# Logged in and connected
|
||||||
|
cloud_prefs._prefs["google_connected"] = True
|
||||||
|
assert cloud_prefs.google_connected
|
||||||
|
mock_cloud = Mock(is_logged_in=True)
|
||||||
|
type(mock_cloud).username = username_mock
|
||||||
|
config = CloudGoogleConfig(
|
||||||
|
hass, GACTIONS_SCHEMA({}), "mock-user-id", cloud_prefs, mock_cloud
|
||||||
|
)
|
||||||
|
assert config.async_get_agent_users() == ("blah",)
|
||||||
|
username_mock.assert_called()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user