mirror of
https://github.com/home-assistant/core.git
synced 2025-12-24 21:06:19 +00:00
Index config entry discovery_keys by discovery domain (#126563)
* Index config entry discovery_keys by discovery domain * Add new signal * Update tests * Update homeassistant/config_entries.py Co-authored-by: J. Nick Koston <nick@koston.org> * Fix imports --------- Co-authored-by: J. Nick Koston <nick@koston.org>
This commit is contained in:
@@ -2756,11 +2756,11 @@ async def test_finish_flow_aborts_progress(
|
||||
[
|
||||
(
|
||||
{},
|
||||
(),
|
||||
{},
|
||||
),
|
||||
(
|
||||
{"discovery_key": DiscoveryKey(domain="test", key="blah", version=1)},
|
||||
(DiscoveryKey(domain="test", key="blah", version=1),),
|
||||
{"test": (DiscoveryKey(domain="test", key="blah", version=1),)},
|
||||
),
|
||||
],
|
||||
)
|
||||
@@ -2921,108 +2921,114 @@ async def test_manual_add_overrides_ignored_entry_singleton(
|
||||
[
|
||||
# No discovery key
|
||||
(
|
||||
(),
|
||||
{},
|
||||
config_entries.SOURCE_IGNORE,
|
||||
"mock-unique-id",
|
||||
{},
|
||||
config_entries.SOURCE_ZEROCONF,
|
||||
data_entry_flow.FlowResultType.ABORT,
|
||||
(),
|
||||
{},
|
||||
),
|
||||
# Discovery key added to ignored entry data
|
||||
(
|
||||
(),
|
||||
{},
|
||||
config_entries.SOURCE_IGNORE,
|
||||
"mock-unique-id",
|
||||
{"discovery_key": {"domain": "test", "key": "blah", "version": 1}},
|
||||
{"discovery_key": DiscoveryKey(domain="test", key="blah", version=1)},
|
||||
config_entries.SOURCE_ZEROCONF,
|
||||
data_entry_flow.FlowResultType.ABORT,
|
||||
({"domain": "test", "key": "blah", "version": 1},),
|
||||
{"test": (DiscoveryKey(domain="test", key="blah", version=1),)},
|
||||
),
|
||||
# Discovery key added to ignored entry data
|
||||
(
|
||||
({"domain": "test", "key": "bleh", "version": 1},),
|
||||
{"test": (DiscoveryKey(domain="test", key="bleh", version=1),)},
|
||||
config_entries.SOURCE_IGNORE,
|
||||
"mock-unique-id",
|
||||
{"discovery_key": {"domain": "test", "key": "blah", "version": 1}},
|
||||
{"discovery_key": DiscoveryKey(domain="test", key="blah", version=1)},
|
||||
config_entries.SOURCE_ZEROCONF,
|
||||
data_entry_flow.FlowResultType.ABORT,
|
||||
(
|
||||
{"domain": "test", "key": "bleh", "version": 1},
|
||||
{"domain": "test", "key": "blah", "version": 1},
|
||||
),
|
||||
{
|
||||
"test": (
|
||||
DiscoveryKey(domain="test", key="bleh", version=1),
|
||||
DiscoveryKey(domain="test", key="blah", version=1),
|
||||
)
|
||||
},
|
||||
),
|
||||
# Discovery key added to ignored entry data
|
||||
(
|
||||
(
|
||||
{"domain": "test", "key": "1", "version": 1},
|
||||
{"domain": "test", "key": "2", "version": 1},
|
||||
{"domain": "test", "key": "3", "version": 1},
|
||||
{"domain": "test", "key": "4", "version": 1},
|
||||
{"domain": "test", "key": "5", "version": 1},
|
||||
{"domain": "test", "key": "6", "version": 1},
|
||||
{"domain": "test", "key": "7", "version": 1},
|
||||
{"domain": "test", "key": "8", "version": 1},
|
||||
{"domain": "test", "key": "9", "version": 1},
|
||||
{"domain": "test", "key": "10", "version": 1},
|
||||
),
|
||||
{
|
||||
"test": (
|
||||
DiscoveryKey(domain="test", key="1", version=1),
|
||||
DiscoveryKey(domain="test", key="2", version=1),
|
||||
DiscoveryKey(domain="test", key="3", version=1),
|
||||
DiscoveryKey(domain="test", key="4", version=1),
|
||||
DiscoveryKey(domain="test", key="5", version=1),
|
||||
DiscoveryKey(domain="test", key="6", version=1),
|
||||
DiscoveryKey(domain="test", key="7", version=1),
|
||||
DiscoveryKey(domain="test", key="8", version=1),
|
||||
DiscoveryKey(domain="test", key="9", version=1),
|
||||
DiscoveryKey(domain="test", key="10", version=1),
|
||||
)
|
||||
},
|
||||
config_entries.SOURCE_IGNORE,
|
||||
"mock-unique-id",
|
||||
{"discovery_key": {"domain": "test", "key": "11", "version": 1}},
|
||||
{"discovery_key": DiscoveryKey(domain="test", key="11", version=1)},
|
||||
config_entries.SOURCE_ZEROCONF,
|
||||
data_entry_flow.FlowResultType.ABORT,
|
||||
(
|
||||
{"domain": "test", "key": "2", "version": 1},
|
||||
{"domain": "test", "key": "3", "version": 1},
|
||||
{"domain": "test", "key": "4", "version": 1},
|
||||
{"domain": "test", "key": "5", "version": 1},
|
||||
{"domain": "test", "key": "6", "version": 1},
|
||||
{"domain": "test", "key": "7", "version": 1},
|
||||
{"domain": "test", "key": "8", "version": 1},
|
||||
{"domain": "test", "key": "9", "version": 1},
|
||||
{"domain": "test", "key": "10", "version": 1},
|
||||
{"domain": "test", "key": "11", "version": 1},
|
||||
),
|
||||
{
|
||||
"test": (
|
||||
DiscoveryKey(domain="test", key="2", version=1),
|
||||
DiscoveryKey(domain="test", key="3", version=1),
|
||||
DiscoveryKey(domain="test", key="4", version=1),
|
||||
DiscoveryKey(domain="test", key="5", version=1),
|
||||
DiscoveryKey(domain="test", key="6", version=1),
|
||||
DiscoveryKey(domain="test", key="7", version=1),
|
||||
DiscoveryKey(domain="test", key="8", version=1),
|
||||
DiscoveryKey(domain="test", key="9", version=1),
|
||||
DiscoveryKey(domain="test", key="10", version=1),
|
||||
DiscoveryKey(domain="test", key="11", version=1),
|
||||
)
|
||||
},
|
||||
),
|
||||
# Discovery key already in ignored entry data
|
||||
(
|
||||
({"domain": "test", "key": "blah", "version": 1},),
|
||||
{"test": (DiscoveryKey(domain="test", key="blah", version=1),)},
|
||||
config_entries.SOURCE_IGNORE,
|
||||
"mock-unique-id",
|
||||
{"discovery_key": {"domain": "test", "key": "blah", "version": 1}},
|
||||
{"discovery_key": DiscoveryKey(domain="test", key="blah", version=1)},
|
||||
config_entries.SOURCE_ZEROCONF,
|
||||
data_entry_flow.FlowResultType.ABORT,
|
||||
({"domain": "test", "key": "blah", "version": 1},),
|
||||
{"test": (DiscoveryKey(domain="test", key="blah", version=1),)},
|
||||
),
|
||||
# Discovery key not added to user entry data
|
||||
(
|
||||
(),
|
||||
{},
|
||||
config_entries.SOURCE_USER,
|
||||
"mock-unique-id",
|
||||
{"discovery_key": {"domain": "test", "key": "blah", "version": 1}},
|
||||
{"discovery_key": DiscoveryKey(domain="test", key="blah", version=1)},
|
||||
config_entries.SOURCE_ZEROCONF,
|
||||
data_entry_flow.FlowResultType.ABORT,
|
||||
(),
|
||||
{},
|
||||
),
|
||||
# Flow not aborted when unique id is not matching
|
||||
(
|
||||
(),
|
||||
{},
|
||||
config_entries.SOURCE_IGNORE,
|
||||
"mock-unique-id-2",
|
||||
{"discovery_key": {"domain": "test", "key": "blah", "version": 1}},
|
||||
{"discovery_key": DiscoveryKey(domain="test", key="blah", version=1)},
|
||||
config_entries.SOURCE_ZEROCONF,
|
||||
data_entry_flow.FlowResultType.FORM,
|
||||
(),
|
||||
{},
|
||||
),
|
||||
# Flow not aborted when user initiated flow
|
||||
(
|
||||
(),
|
||||
{},
|
||||
config_entries.SOURCE_IGNORE,
|
||||
"mock-unique-id-2",
|
||||
{"discovery_key": {"domain": "test", "key": "blah", "version": 1}},
|
||||
{"discovery_key": DiscoveryKey(domain="test", key="blah", version=1)},
|
||||
config_entries.SOURCE_USER,
|
||||
data_entry_flow.FlowResultType.FORM,
|
||||
(),
|
||||
{},
|
||||
),
|
||||
],
|
||||
)
|
||||
@@ -5251,7 +5257,7 @@ async def test_unhashable_unique_id(
|
||||
entries = config_entries.ConfigEntryItems(hass)
|
||||
entry = config_entries.ConfigEntry(
|
||||
data={},
|
||||
discovery_keys=(),
|
||||
discovery_keys={},
|
||||
domain="test",
|
||||
entry_id="mock_id",
|
||||
minor_version=1,
|
||||
@@ -5284,7 +5290,7 @@ async def test_hashable_non_string_unique_id(
|
||||
entries = config_entries.ConfigEntryItems(hass)
|
||||
entry = config_entries.ConfigEntry(
|
||||
data={},
|
||||
discovery_keys=(),
|
||||
discovery_keys={},
|
||||
domain="test",
|
||||
entry_id="mock_id",
|
||||
minor_version=1,
|
||||
@@ -6186,7 +6192,7 @@ async def test_migration_from_1_2(
|
||||
"created_at": "1970-01-01T00:00:00+00:00",
|
||||
"data": {},
|
||||
"disabled_by": None,
|
||||
"discovery_keys": [],
|
||||
"discovery_keys": {},
|
||||
"domain": "sun",
|
||||
"entry_id": "0a8bd02d0d58c7debf5daf7941c9afe2",
|
||||
"minor_version": 1,
|
||||
|
||||
Reference in New Issue
Block a user