From 2c8fc67ab1decc402aefe8109ad8c73358da6c9d Mon Sep 17 00:00:00 2001 From: David Bonnes Date: Sat, 26 Oct 2024 14:24:41 +0100 Subject: [PATCH] Fix evohome failing to start with `'NoneType' object has no attribute 'get'` (#129222) --- homeassistant/components/evohome/__init__.py | 2 +- tests/components/evohome/test_storage.py | 23 +++++++++----------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/homeassistant/components/evohome/__init__.py b/homeassistant/components/evohome/__init__.py index 64994a4f63a..1097f19f47c 100644 --- a/homeassistant/components/evohome/__init__.py +++ b/homeassistant/components/evohome/__init__.py @@ -176,7 +176,7 @@ class EvoSession: ): app_storage[ACCESS_TOKEN_EXPIRES] = dt_aware_to_naive(expires) - user_data: dict[str, str] = app_storage.pop(USER_DATA, {}) + user_data: dict[str, str] = app_storage.pop(USER_DATA, {}) or {} self.session_id = user_data.get(SZ_SESSION_ID) self._tokens = app_storage diff --git a/tests/components/evohome/test_storage.py b/tests/components/evohome/test_storage.py index 33f6c6b3e6c..4cc21078333 100644 --- a/tests/components/evohome/test_storage.py +++ b/tests/components/evohome/test_storage.py @@ -55,20 +55,17 @@ ACCESS_TOKEN_EXP_DTM, ACCESS_TOKEN_EXP_STR = dt_pair(dt_util.now() + timedelta(h USERNAME_DIFF: Final = f"not_{USERNAME}" USERNAME_SAME: Final = USERNAME +_TEST_STORAGE_BASE: Final[_TokenStoreT] = { + SZ_USERNAME: USERNAME_SAME, + SZ_REFRESH_TOKEN: REFRESH_TOKEN, + SZ_ACCESS_TOKEN: ACCESS_TOKEN, + SZ_ACCESS_TOKEN_EXPIRES: ACCESS_TOKEN_EXP_STR, +} + TEST_STORAGE_DATA: Final[dict[str, _TokenStoreT]] = { - "sans_session_id": { - SZ_USERNAME: USERNAME_SAME, - SZ_REFRESH_TOKEN: REFRESH_TOKEN, - SZ_ACCESS_TOKEN: ACCESS_TOKEN, - SZ_ACCESS_TOKEN_EXPIRES: ACCESS_TOKEN_EXP_STR, - }, - "with_session_id": { - SZ_USERNAME: USERNAME_SAME, - SZ_REFRESH_TOKEN: REFRESH_TOKEN, - SZ_ACCESS_TOKEN: ACCESS_TOKEN, - SZ_ACCESS_TOKEN_EXPIRES: ACCESS_TOKEN_EXP_STR, - SZ_USER_DATA: {"sessionId": SESSION_ID}, - }, + "sans_session_id": _TEST_STORAGE_BASE, + "null_session_id": _TEST_STORAGE_BASE | {SZ_USER_DATA: None}, # type: ignore[dict-item] + "with_session_id": _TEST_STORAGE_BASE | {SZ_USER_DATA: {"sessionId": SESSION_ID}}, } TEST_STORAGE_NULL: Final[dict[str, _EmptyStoreT | None]] = {