Store preferred border agent ID for each thread dataset (#98384)

This commit is contained in:
Erik Montnemery
2023-08-14 15:47:18 +02:00
committed by GitHub
parent b0f68f1ef3
commit e0fd83daab
8 changed files with 92 additions and 100 deletions

View File

@@ -160,6 +160,7 @@ async def test_list_get_dataset(
"network_name": "OpenThreadDemo",
"pan_id": "1234",
"preferred": True,
"preferred_border_agent_id": None,
"source": "Google",
},
{
@@ -170,6 +171,7 @@ async def test_list_get_dataset(
"network_name": "HomeAssistant!",
"pan_id": "1234",
"preferred": False,
"preferred_border_agent_id": None,
"source": "Multipan",
},
{
@@ -180,6 +182,7 @@ async def test_list_get_dataset(
"network_name": "~🐣🐥🐤~",
"pan_id": "1234",
"preferred": False,
"preferred_border_agent_id": None,
"source": "🎅",
},
]
@@ -200,33 +203,45 @@ async def test_list_get_dataset(
assert msg["error"] == {"code": "not_found", "message": "unknown dataset"}
async def test_preferred_border_agent_id(
async def test_set_preferred_border_agent_id(
hass: HomeAssistant, hass_ws_client: WebSocketGenerator
) -> None:
"""Test setting and getting the preferred border agent ID."""
"""Test setting the preferred border agent ID."""
assert await async_setup_component(hass, DOMAIN, {})
await hass.async_block_till_done()
client = await hass_ws_client(hass)
await client.send_json_auto_id({"type": "thread/get_preferred_border_agent_id"})
msg = await client.receive_json()
assert msg["success"]
assert msg["result"] == {"border_agent_id": None}
await client.send_json_auto_id(
{"type": "thread/set_preferred_border_agent_id", "border_agent_id": "blah"}
{"type": "thread/add_dataset_tlv", "source": "test", "tlv": DATASET_1}
)
msg = await client.receive_json()
assert msg["success"]
assert msg["result"] is None
await client.send_json_auto_id({"type": "thread/get_preferred_border_agent_id"})
await client.send_json_auto_id({"type": "thread/list_datasets"})
msg = await client.receive_json()
assert msg["success"]
assert msg["result"] == {"border_agent_id": "blah"}
datasets = msg["result"]["datasets"]
dataset_id = datasets[0]["dataset_id"]
assert datasets[0]["preferred_border_agent_id"] is None
assert await dataset_store.async_get_preferred_border_agent_id(hass) == "blah"
await client.send_json_auto_id(
{
"type": "thread/set_preferred_border_agent_id",
"dataset_id": dataset_id,
"border_agent_id": "blah",
}
)
msg = await client.receive_json()
assert msg["success"]
assert msg["result"] is None
await client.send_json_auto_id({"type": "thread/list_datasets"})
msg = await client.receive_json()
assert msg["success"]
datasets = msg["result"]["datasets"]
assert datasets[0]["preferred_border_agent_id"] == "blah"
async def test_set_preferred_dataset(