1
mirror of https://github.com/home-assistant/core synced 2024-07-12 07:21:24 +02:00

Fix extra data for AWS sns service (#64771)

* Fix extra data for ANS sns service

* Add test

* apply review comments
This commit is contained in:
Simone Chemelli 2022-01-25 10:46:04 +01:00 committed by GitHub
parent c202b24cae
commit d9e6ce00e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 56 additions and 5 deletions

View File

@ -12,6 +12,7 @@ from homeassistant.components.notify import (
ATTR_TITLE_DEFAULT,
BaseNotificationService,
)
from homeassistant.components.notify.const import ATTR_DATA
from homeassistant.const import (
CONF_NAME,
CONF_PLATFORM,
@ -166,11 +167,13 @@ class AWSSNS(AWSNotify):
_LOGGER.error("At least one target is required")
return
message_attributes = {
k: {"StringValue": json.dumps(v), "DataType": "String"}
for k, v in kwargs.items()
if v is not None
}
message_attributes = {}
if data := kwargs.get(ATTR_DATA):
message_attributes = {
k: {"StringValue": v, "DataType": "String"}
for k, v in data.items()
if v is not None
}
subject = kwargs.get(ATTR_TITLE, ATTR_TITLE_DEFAULT)
async with self.session.create_client(

View File

@ -266,3 +266,51 @@ async def test_credential_skip_validate(hass):
session = sessions.get("key")
assert isinstance(session, MockAioSession)
session.get_user.assert_not_awaited()
async def test_service_call_extra_data(hass):
"""Test service call extra data are parsed properly."""
with async_patch("homeassistant.components.aws.AioSession", new=MockAioSession):
await async_setup_component(
hass,
"aws",
{
"aws": {
"notify": [
{
"service": "sns",
"name": "SNS Test",
"region_name": "us-east-1",
}
]
}
},
)
await hass.async_block_till_done()
sessions = hass.data[aws.DATA_SESSIONS]
assert sessions is not None
assert len(sessions) == 1
session = sessions.get("default")
assert isinstance(session, MockAioSession)
assert hass.services.has_service("notify", "sns_test") is True
await hass.services.async_call(
"notify",
"sns_test",
{
"message": "test",
"target": "ARN",
"data": {"AWS.SNS.SMS.SenderID": "HA-notify"},
},
blocking=True,
)
session.publish.assert_called_once_with(
TargetArn="ARN",
Message="test",
Subject="Home Assistant",
MessageAttributes={
"AWS.SNS.SMS.SenderID": {"StringValue": "HA-notify", "DataType": "String"}
},
)