1
0
mirror of https://github.com/home-assistant/core.git synced 2025-12-24 21:06:19 +00:00

Protect state.as_dict from mutation (#65693)

This commit is contained in:
Paulus Schoutsen
2022-02-04 14:45:25 -08:00
committed by GitHub
parent 0d3bbfc9a7
commit 5da923c341
14 changed files with 114 additions and 45 deletions

View File

@@ -39,6 +39,7 @@ from homeassistant.exceptions import (
ServiceNotFound,
)
import homeassistant.util.dt as dt_util
from homeassistant.util.read_only_dict import ReadOnlyDict
from homeassistant.util.unit_system import METRIC_SYSTEM
from tests.common import async_capture_events, async_mock_service
@@ -377,10 +378,14 @@ def test_state_as_dict():
"last_updated": last_time.isoformat(),
"state": "on",
}
assert state.as_dict() == expected
as_dict_1 = state.as_dict()
assert isinstance(as_dict_1, ReadOnlyDict)
assert isinstance(as_dict_1["attributes"], ReadOnlyDict)
assert isinstance(as_dict_1["context"], ReadOnlyDict)
assert as_dict_1 == expected
# 2nd time to verify cache
assert state.as_dict() == expected
assert state.as_dict() is state.as_dict()
assert state.as_dict() is as_dict_1
async def test_eventbus_add_remove_listener(hass):