Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions homeassistant/components/smtp/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
"""The smtp component."""

DOMAIN = "smtp"
PLATFORMS = ["notify"]
4 changes: 4 additions & 0 deletions homeassistant/components/smtp/notify.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,11 @@
CONF_USERNAME,
)
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.reload import setup_reload_service
import homeassistant.util.dt as dt_util

from . import DOMAIN, PLATFORMS

_LOGGER = logging.getLogger(__name__)

ATTR_IMAGES = "images" # optional embedded image file attachments
Expand Down Expand Up @@ -67,6 +70,7 @@

def get_service(hass, config, discovery_info=None):
"""Get the mail notification service."""
setup_reload_service(hass, DOMAIN, PLATFORMS)
mail_service = MailNotificationService(
config.get(CONF_SERVER),
config.get(CONF_PORT),
Expand Down
2 changes: 2 additions & 0 deletions homeassistant/components/smtp/services.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
reload:
description: Reload smtp notify services.
54 changes: 54 additions & 0 deletions tests/components/smtp/test_notify.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
"""The tests for the notify smtp platform."""
from os import path
import re
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.const import SERVICE_RELOAD
from homeassistant.setup import async_setup_component

from tests.async_mock import patch
from tests.common import get_test_home_assistant
Expand Down Expand Up @@ -85,3 +91,51 @@ def test_html_email(self, mock_make_msgid):
"Test msg", data={"html": html, "images": ["test.jpg"]}
)
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 changes: 5 additions & 0 deletions tests/fixtures/smtp/configuration.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
notify:
- name: smtp_reloaded
platform: smtp
sender: test@example.com
recipient: test@example.com