72 lines
2.3 KiB
Python
72 lines
2.3 KiB
Python
"""Test the send_message service."""
|
|
|
|
from homeassistant.components.matrix import (
|
|
ATTR_FORMAT,
|
|
ATTR_IMAGES,
|
|
DOMAIN as MATRIX_DOMAIN,
|
|
MatrixBot,
|
|
)
|
|
from homeassistant.components.matrix.const import FORMAT_HTML, SERVICE_SEND_MESSAGE
|
|
from homeassistant.components.notify import ATTR_DATA, ATTR_MESSAGE, ATTR_TARGET
|
|
from homeassistant.core import HomeAssistant
|
|
|
|
from tests.components.matrix.conftest import TEST_BAD_ROOM, TEST_JOINABLE_ROOMS
|
|
|
|
|
|
async def test_send_message(
|
|
hass: HomeAssistant, matrix_bot: MatrixBot, image_path, matrix_events, caplog
|
|
):
|
|
"""Test the send_message service."""
|
|
assert len(matrix_events) == 0
|
|
await matrix_bot._login()
|
|
|
|
# Send a message without an attached image.
|
|
data = {ATTR_MESSAGE: "Test message", ATTR_TARGET: TEST_JOINABLE_ROOMS}
|
|
await hass.services.async_call(
|
|
MATRIX_DOMAIN, SERVICE_SEND_MESSAGE, data, blocking=True
|
|
)
|
|
|
|
for room_id in TEST_JOINABLE_ROOMS:
|
|
assert f"Message delivered to room '{room_id}'" in caplog.messages
|
|
|
|
# Send an HTML message without an attached image.
|
|
data = {
|
|
ATTR_MESSAGE: "Test message",
|
|
ATTR_TARGET: TEST_JOINABLE_ROOMS,
|
|
ATTR_DATA: {ATTR_FORMAT: FORMAT_HTML},
|
|
}
|
|
await hass.services.async_call(
|
|
MATRIX_DOMAIN, SERVICE_SEND_MESSAGE, data, blocking=True
|
|
)
|
|
|
|
for room_id in TEST_JOINABLE_ROOMS:
|
|
assert f"Message delivered to room '{room_id}'" in caplog.messages
|
|
|
|
# Send a message with an attached image.
|
|
data[ATTR_DATA] = {ATTR_IMAGES: [image_path.name]}
|
|
await hass.services.async_call(
|
|
MATRIX_DOMAIN, SERVICE_SEND_MESSAGE, data, blocking=True
|
|
)
|
|
|
|
for room_id in TEST_JOINABLE_ROOMS:
|
|
assert f"Message delivered to room '{room_id}'" in caplog.messages
|
|
|
|
|
|
async def test_unsendable_message(
|
|
hass: HomeAssistant, matrix_bot: MatrixBot, matrix_events, caplog
|
|
):
|
|
"""Test the send_message service with an invalid room."""
|
|
assert len(matrix_events) == 0
|
|
await matrix_bot._login()
|
|
|
|
data = {ATTR_MESSAGE: "Test message", ATTR_TARGET: TEST_BAD_ROOM}
|
|
|
|
await hass.services.async_call(
|
|
MATRIX_DOMAIN, SERVICE_SEND_MESSAGE, data, blocking=True
|
|
)
|
|
|
|
assert (
|
|
f"Unable to deliver message to room '{TEST_BAD_ROOM}': ErrorResponse: Cannot send a message in this room."
|
|
in caplog.messages
|
|
)
|