Fix MatrixBot not resolving room aliases per-command (#106347)
This commit is contained in:
parent
28281523ec
commit
5afe155cd9
4 changed files with 246 additions and 79 deletions
|
@ -31,6 +31,8 @@ from homeassistant.components.matrix import (
|
|||
CONF_WORD,
|
||||
EVENT_MATRIX_COMMAND,
|
||||
MatrixBot,
|
||||
RoomAlias,
|
||||
RoomAnyID,
|
||||
RoomID,
|
||||
)
|
||||
from homeassistant.components.matrix.const import DOMAIN as MATRIX_DOMAIN
|
||||
|
@ -51,13 +53,15 @@ from tests.common import async_capture_events
|
|||
TEST_NOTIFIER_NAME = "matrix_notify"
|
||||
|
||||
TEST_HOMESERVER = "example.com"
|
||||
TEST_DEFAULT_ROOM = "!DefaultNotificationRoom:example.com"
|
||||
TEST_ROOM_A_ID = "!RoomA-ID:example.com"
|
||||
TEST_ROOM_B_ID = "!RoomB-ID:example.com"
|
||||
TEST_ROOM_B_ALIAS = "#RoomB-Alias:example.com"
|
||||
TEST_JOINABLE_ROOMS = {
|
||||
TEST_DEFAULT_ROOM = RoomID("!DefaultNotificationRoom:example.com")
|
||||
TEST_ROOM_A_ID = RoomID("!RoomA-ID:example.com")
|
||||
TEST_ROOM_B_ID = RoomID("!RoomB-ID:example.com")
|
||||
TEST_ROOM_B_ALIAS = RoomAlias("#RoomB-Alias:example.com")
|
||||
TEST_ROOM_C_ID = RoomID("!RoomC-ID:example.com")
|
||||
TEST_JOINABLE_ROOMS: dict[RoomAnyID, RoomID] = {
|
||||
TEST_ROOM_A_ID: TEST_ROOM_A_ID,
|
||||
TEST_ROOM_B_ALIAS: TEST_ROOM_B_ID,
|
||||
TEST_ROOM_C_ID: TEST_ROOM_C_ID,
|
||||
}
|
||||
TEST_BAD_ROOM = "!UninvitedRoom:example.com"
|
||||
TEST_MXID = "@user:example.com"
|
||||
|
@ -74,7 +78,7 @@ class _MockAsyncClient(AsyncClient):
|
|||
async def close(self):
|
||||
return None
|
||||
|
||||
async def room_resolve_alias(self, room_alias: str):
|
||||
async def room_resolve_alias(self, room_alias: RoomAnyID):
|
||||
if room_id := TEST_JOINABLE_ROOMS.get(room_alias):
|
||||
return RoomResolveAliasResponse(
|
||||
room_alias=room_alias, room_id=room_id, servers=[TEST_HOMESERVER]
|
||||
|
@ -150,6 +154,16 @@ MOCK_CONFIG_DATA = {
|
|||
CONF_EXPRESSION: "My name is (?P<name>.*)",
|
||||
CONF_NAME: "ExpressionTriggerEventName",
|
||||
},
|
||||
{
|
||||
CONF_WORD: "WordTriggerSubset",
|
||||
CONF_NAME: "WordTriggerSubsetEventName",
|
||||
CONF_ROOMS: [TEST_ROOM_B_ALIAS, TEST_ROOM_C_ID],
|
||||
},
|
||||
{
|
||||
CONF_EXPRESSION: "Your name is (?P<name>.*)",
|
||||
CONF_NAME: "ExpressionTriggerSubsetEventName",
|
||||
CONF_ROOMS: [TEST_ROOM_B_ALIAS, TEST_ROOM_C_ID],
|
||||
},
|
||||
],
|
||||
},
|
||||
NOTIFY_DOMAIN: {
|
||||
|
@ -164,15 +178,32 @@ MOCK_WORD_COMMANDS = {
|
|||
"WordTrigger": {
|
||||
"word": "WordTrigger",
|
||||
"name": "WordTriggerEventName",
|
||||
"rooms": [TEST_ROOM_A_ID, TEST_ROOM_B_ID],
|
||||
"rooms": list(TEST_JOINABLE_ROOMS.values()),
|
||||
}
|
||||
},
|
||||
TEST_ROOM_B_ID: {
|
||||
"WordTrigger": {
|
||||
"word": "WordTrigger",
|
||||
"name": "WordTriggerEventName",
|
||||
"rooms": [TEST_ROOM_A_ID, TEST_ROOM_B_ID],
|
||||
}
|
||||
"rooms": list(TEST_JOINABLE_ROOMS.values()),
|
||||
},
|
||||
"WordTriggerSubset": {
|
||||
"word": "WordTriggerSubset",
|
||||
"name": "WordTriggerSubsetEventName",
|
||||
"rooms": [TEST_ROOM_B_ID, TEST_ROOM_C_ID],
|
||||
},
|
||||
},
|
||||
TEST_ROOM_C_ID: {
|
||||
"WordTrigger": {
|
||||
"word": "WordTrigger",
|
||||
"name": "WordTriggerEventName",
|
||||
"rooms": list(TEST_JOINABLE_ROOMS.values()),
|
||||
},
|
||||
"WordTriggerSubset": {
|
||||
"word": "WordTriggerSubset",
|
||||
"name": "WordTriggerSubsetEventName",
|
||||
"rooms": [TEST_ROOM_B_ID, TEST_ROOM_C_ID],
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -181,15 +212,32 @@ MOCK_EXPRESSION_COMMANDS = {
|
|||
{
|
||||
"expression": re.compile("My name is (?P<name>.*)"),
|
||||
"name": "ExpressionTriggerEventName",
|
||||
"rooms": [TEST_ROOM_A_ID, TEST_ROOM_B_ID],
|
||||
"rooms": list(TEST_JOINABLE_ROOMS.values()),
|
||||
}
|
||||
],
|
||||
TEST_ROOM_B_ID: [
|
||||
{
|
||||
"expression": re.compile("My name is (?P<name>.*)"),
|
||||
"name": "ExpressionTriggerEventName",
|
||||
"rooms": [TEST_ROOM_A_ID, TEST_ROOM_B_ID],
|
||||
}
|
||||
"rooms": list(TEST_JOINABLE_ROOMS.values()),
|
||||
},
|
||||
{
|
||||
"expression": re.compile("Your name is (?P<name>.*)"),
|
||||
"name": "ExpressionTriggerSubsetEventName",
|
||||
"rooms": [TEST_ROOM_B_ID, TEST_ROOM_C_ID],
|
||||
},
|
||||
],
|
||||
TEST_ROOM_C_ID: [
|
||||
{
|
||||
"expression": re.compile("My name is (?P<name>.*)"),
|
||||
"name": "ExpressionTriggerEventName",
|
||||
"rooms": list(TEST_JOINABLE_ROOMS.values()),
|
||||
},
|
||||
{
|
||||
"expression": re.compile("Your name is (?P<name>.*)"),
|
||||
"name": "ExpressionTriggerSubsetEventName",
|
||||
"rooms": [TEST_ROOM_B_ID, TEST_ROOM_C_ID],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue