Support reloading the smtp notify platform (#39530)

* Support reloading the smtp notify platform

* patch test
This commit is contained in:
J. Nick Koston 2020-09-02 19:43:07 -05:00 committed by GitHub
parent 93555fed75
commit 56e76a3265
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 68 additions and 0 deletions

View File

@ -1 +1,4 @@
"""The smtp component.""" """The smtp component."""
DOMAIN = "smtp"
PLATFORMS = ["notify"]

View File

@ -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),

View File

@ -0,0 +1,2 @@
reload:
description: Reload smtp notify services.

View File

@ -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__)))

View File

@ -0,0 +1,5 @@
notify:
- name: smtp_reloaded
platform: smtp
sender: test@example.com
recipient: test@example.com