Skip to content

Commit e9dcde1

Browse files
mathisdtabmantis
andauthored
Allow overriding default recipient in Signal messenger (home-assistant#145654)
Co-authored-by: Abílio Costa <[email protected]>
1 parent f44b6a3 commit e9dcde1

File tree

2 files changed

+30
-4
lines changed

2 files changed

+30
-4
lines changed

homeassistant/components/signal_messenger/notify.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
from homeassistant.components.notify import (
1313
ATTR_DATA,
14+
ATTR_TARGET,
1415
PLATFORM_SCHEMA as NOTIFY_PLATFORM_SCHEMA,
1516
BaseNotificationService,
1617
)
@@ -98,10 +99,12 @@ def __init__(
9899
self._signal_cli_rest_api = signal_cli_rest_api
99100

100101
def send_message(self, message: str = "", **kwargs: Any) -> None:
101-
"""Send a message to a one or more recipients. Additionally a file can be attached."""
102+
"""Send a message to one or more recipients. Additionally a file can be attached."""
102103

103104
_LOGGER.debug("Sending signal message")
104105

106+
recipients: list[str] = kwargs.get(ATTR_TARGET) or self._recp_nrs
107+
105108
data = kwargs.get(ATTR_DATA)
106109

107110
try:
@@ -117,7 +120,7 @@ def send_message(self, message: str = "", **kwargs: Any) -> None:
117120
try:
118121
self._signal_cli_rest_api.send_message(
119122
message,
120-
self._recp_nrs,
123+
recipients,
121124
filenames,
122125
attachments_as_bytes,
123126
text_mode="normal" if data is None else data.get(ATTR_TEXTMODE),

tests/components/signal_messenger/test_notify.py

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,27 @@ def test_send_message(
6464
assert_sending_requests(signal_requests_mock)
6565

6666

67+
def test_send_message_with_custom_recipients(
68+
signal_notification_service: SignalNotificationService,
69+
signal_requests_mock_factory: Mocker,
70+
caplog: pytest.LogCaptureFixture,
71+
) -> None:
72+
"""Test send message with custom recipients."""
73+
signal_requests_mock = signal_requests_mock_factory()
74+
with caplog.at_level(
75+
logging.DEBUG, logger="homeassistant.components.signal_messenger.notify"
76+
):
77+
signal_notification_service.send_message(
78+
MESSAGE, target=["+49111111111", "+49222222222"]
79+
)
80+
assert "Sending signal message" in caplog.text
81+
assert signal_requests_mock.called
82+
assert signal_requests_mock.call_count == 2
83+
assert_sending_requests(
84+
signal_requests_mock, recipients=["+49111111111", "+49222222222"]
85+
)
86+
87+
6788
def test_send_message_styled(
6889
signal_notification_service: SignalNotificationService,
6990
signal_requests_mock_factory: Mocker,
@@ -416,7 +437,9 @@ def test_get_attachments_with_verify_set_garbage(
416437

417438

418439
def assert_sending_requests(
419-
signal_requests_mock_factory: Mocker, attachments_num: int = 0
440+
signal_requests_mock_factory: Mocker,
441+
attachments_num: int = 0,
442+
recipients: list[str] | None = None,
420443
) -> None:
421444
"""Assert message was send with correct parameters."""
422445
send_request = signal_requests_mock_factory.request_history[-1]
@@ -425,7 +448,7 @@ def assert_sending_requests(
425448
body_request = json.loads(send_request.text)
426449
assert body_request["message"] == MESSAGE
427450
assert body_request["number"] == NUMBER_FROM
428-
assert body_request["recipients"] == NUMBERS_TO
451+
assert body_request["recipients"] == (recipients if recipients else NUMBERS_TO)
429452
assert len(body_request["base64_attachments"]) == attachments_num
430453

431454
for attachment in body_request["base64_attachments"]:

0 commit comments

Comments
 (0)