mirror of
https://github.com/home-assistant/core.git
synced 2025-07-17 02:07:09 +00:00
Support reloading the smtp notify platform (#39530)
* Support reloading the smtp notify platform * patch test
This commit is contained in:
parent
93555fed75
commit
56e76a3265
@ -1 +1,4 @@
|
|||||||
"""The smtp component."""
|
"""The smtp component."""
|
||||||
|
|
||||||
|
DOMAIN = "smtp"
|
||||||
|
PLATFORMS = ["notify"]
|
||||||
|
@ -26,8 +26,11 @@ from homeassistant.const import (
|
|||||||
CONF_USERNAME,
|
CONF_USERNAME,
|
||||||
)
|
)
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
from homeassistant.helpers.reload import setup_reload_service
|
||||||
import homeassistant.util.dt as dt_util
|
import homeassistant.util.dt as dt_util
|
||||||
|
|
||||||
|
from . import DOMAIN, PLATFORMS
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
ATTR_IMAGES = "images" # optional embedded image file attachments
|
ATTR_IMAGES = "images" # optional embedded image file attachments
|
||||||
@ -67,6 +70,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
|||||||
|
|
||||||
def get_service(hass, config, discovery_info=None):
|
def get_service(hass, config, discovery_info=None):
|
||||||
"""Get the mail notification service."""
|
"""Get the mail notification service."""
|
||||||
|
setup_reload_service(hass, DOMAIN, PLATFORMS)
|
||||||
mail_service = MailNotificationService(
|
mail_service = MailNotificationService(
|
||||||
config.get(CONF_SERVER),
|
config.get(CONF_SERVER),
|
||||||
config.get(CONF_PORT),
|
config.get(CONF_PORT),
|
||||||
|
2
homeassistant/components/smtp/services.yaml
Normal file
2
homeassistant/components/smtp/services.yaml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
reload:
|
||||||
|
description: Reload smtp notify services.
|
@ -1,8 +1,14 @@
|
|||||||
"""The tests for the notify smtp platform."""
|
"""The tests for the notify smtp platform."""
|
||||||
|
from os import path
|
||||||
import re
|
import re
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
|
from homeassistant import config as hass_config
|
||||||
|
import homeassistant.components.notify as notify
|
||||||
|
from homeassistant.components.smtp import DOMAIN
|
||||||
from homeassistant.components.smtp.notify import MailNotificationService
|
from homeassistant.components.smtp.notify import MailNotificationService
|
||||||
|
from homeassistant.const import SERVICE_RELOAD
|
||||||
|
from homeassistant.setup import async_setup_component
|
||||||
|
|
||||||
from tests.async_mock import patch
|
from tests.async_mock import patch
|
||||||
from tests.common import get_test_home_assistant
|
from tests.common import get_test_home_assistant
|
||||||
@ -85,3 +91,51 @@ class TestNotifySmtp(unittest.TestCase):
|
|||||||
"Test msg", data={"html": html, "images": ["test.jpg"]}
|
"Test msg", data={"html": html, "images": ["test.jpg"]}
|
||||||
)
|
)
|
||||||
assert "Content-Type: multipart/related" in msg
|
assert "Content-Type: multipart/related" in msg
|
||||||
|
|
||||||
|
|
||||||
|
async def test_reload_notify(hass):
|
||||||
|
"""Verify we can reload the notify service."""
|
||||||
|
|
||||||
|
with patch(
|
||||||
|
"homeassistant.components.smtp.notify.MailNotificationService.connection_is_valid"
|
||||||
|
):
|
||||||
|
assert await async_setup_component(
|
||||||
|
hass,
|
||||||
|
notify.DOMAIN,
|
||||||
|
{
|
||||||
|
notify.DOMAIN: [
|
||||||
|
{
|
||||||
|
"name": DOMAIN,
|
||||||
|
"platform": DOMAIN,
|
||||||
|
"recipient": "test@example.com",
|
||||||
|
"sender": "test@example.com",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
assert hass.services.has_service(notify.DOMAIN, DOMAIN)
|
||||||
|
|
||||||
|
yaml_path = path.join(
|
||||||
|
_get_fixtures_base_path(),
|
||||||
|
"fixtures",
|
||||||
|
"smtp/configuration.yaml",
|
||||||
|
)
|
||||||
|
with patch.object(hass_config, "YAML_CONFIG_FILE", yaml_path), patch(
|
||||||
|
"homeassistant.components.smtp.notify.MailNotificationService.connection_is_valid"
|
||||||
|
):
|
||||||
|
await hass.services.async_call(
|
||||||
|
DOMAIN,
|
||||||
|
SERVICE_RELOAD,
|
||||||
|
{},
|
||||||
|
blocking=True,
|
||||||
|
)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
assert not hass.services.has_service(notify.DOMAIN, DOMAIN)
|
||||||
|
assert hass.services.has_service(notify.DOMAIN, "smtp_reloaded")
|
||||||
|
|
||||||
|
|
||||||
|
def _get_fixtures_base_path():
|
||||||
|
return path.dirname(path.dirname(path.dirname(__file__)))
|
||||||
|
5
tests/fixtures/smtp/configuration.yaml
vendored
Normal file
5
tests/fixtures/smtp/configuration.yaml
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
notify:
|
||||||
|
- name: smtp_reloaded
|
||||||
|
platform: smtp
|
||||||
|
sender: test@example.com
|
||||||
|
recipient: test@example.com
|
Loading…
x
Reference in New Issue
Block a user