diff --git a/homeassistant/config_entries.py b/homeassistant/config_entries.py index 7763594e0e1a..a2a9ce789890 100644 --- a/homeassistant/config_entries.py +++ b/homeassistant/config_entries.py @@ -379,6 +379,12 @@ class ConfigEntries: CONN_CLASS_UNKNOWN)) for entry in config['entries']] + @callback + def async_update_entry(self, entry, *, data): + """Update a config entry.""" + entry.data = data + self._async_schedule_save() + async def async_forward_entry_setup(self, entry, component): """Forward the setup of an entry to a different component. diff --git a/tests/test_config_entries.py b/tests/test_config_entries.py index 57d63eb8271f..afb13d71c2ee 100644 --- a/tests/test_config_entries.py +++ b/tests/test_config_entries.py @@ -315,3 +315,20 @@ async def test_loading_default_config(hass): await manager.async_load() assert len(manager.async_entries()) == 0 + + +async def test_updating_entry_data(manager): + """Test that we can update an entry data.""" + entry = MockConfigEntry( + domain='test', + data={'first': True}, + ) + entry.add_to_manager(manager) + + manager.async_update_entry(entry, data={ + 'second': True + }) + + assert entry.data == { + 'second': True + }