mirror of
https://github.com/home-assistant/core.git
synced 2025-07-21 12:17:07 +00:00
Support reloading the rest notify platform (#39527)
* Support reloading the rest notify platform * update services.yaml * fix conflict
This commit is contained in:
parent
a778690b64
commit
661b593db3
@ -1,4 +1,4 @@
|
|||||||
"""The rest component."""
|
"""The rest component."""
|
||||||
|
|
||||||
DOMAIN = "rest"
|
DOMAIN = "rest"
|
||||||
PLATFORMS = ["binary_sensor", "sensor", "switch"]
|
PLATFORMS = ["binary_sensor", "notify", "sensor", "switch"]
|
||||||
|
@ -28,6 +28,9 @@ from homeassistant.const import (
|
|||||||
HTTP_OK,
|
HTTP_OK,
|
||||||
)
|
)
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
from homeassistant.helpers.reload import setup_reload_service
|
||||||
|
|
||||||
|
from . import DOMAIN, PLATFORMS
|
||||||
|
|
||||||
CONF_DATA = "data"
|
CONF_DATA = "data"
|
||||||
CONF_DATA_TEMPLATE = "data_template"
|
CONF_DATA_TEMPLATE = "data_template"
|
||||||
@ -67,6 +70,8 @@ _LOGGER = logging.getLogger(__name__)
|
|||||||
|
|
||||||
def get_service(hass, config, discovery_info=None):
|
def get_service(hass, config, discovery_info=None):
|
||||||
"""Get the RESTful notification service."""
|
"""Get the RESTful notification service."""
|
||||||
|
setup_reload_service(hass, DOMAIN, PLATFORMS)
|
||||||
|
|
||||||
resource = config.get(CONF_RESOURCE)
|
resource = config.get(CONF_RESOURCE)
|
||||||
method = config.get(CONF_METHOD)
|
method = config.get(CONF_METHOD)
|
||||||
headers = config.get(CONF_HEADERS)
|
headers = config.get(CONF_HEADERS)
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
reload:
|
reload:
|
||||||
description: Reload all rest entities.
|
description: Reload all rest entities and notify services.
|
||||||
|
@ -141,6 +141,12 @@ def async_get_platform(
|
|||||||
hass: HomeAssistantType, integration_name: str, integration_platform_name: str
|
hass: HomeAssistantType, integration_name: str, integration_platform_name: str
|
||||||
) -> Optional[EntityPlatform]:
|
) -> Optional[EntityPlatform]:
|
||||||
"""Find an existing platform."""
|
"""Find an existing platform."""
|
||||||
|
if (
|
||||||
|
DATA_ENTITY_PLATFORM not in hass.data
|
||||||
|
or integration_name not in hass.data[DATA_ENTITY_PLATFORM]
|
||||||
|
):
|
||||||
|
return None
|
||||||
|
|
||||||
for integration_platform in hass.data[DATA_ENTITY_PLATFORM][integration_name]:
|
for integration_platform in hass.data[DATA_ENTITY_PLATFORM][integration_name]:
|
||||||
if integration_platform.domain == integration_platform_name:
|
if integration_platform.domain == integration_platform_name:
|
||||||
platform: EntityPlatform = integration_platform
|
platform: EntityPlatform = integration_platform
|
||||||
|
52
tests/components/rest/test_notify.py
Normal file
52
tests/components/rest/test_notify.py
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
"""The tests for the rest.notify platform."""
|
||||||
|
from os import path
|
||||||
|
|
||||||
|
from homeassistant import config as hass_config
|
||||||
|
import homeassistant.components.notify as notify
|
||||||
|
from homeassistant.components.rest import DOMAIN
|
||||||
|
from homeassistant.const import SERVICE_RELOAD
|
||||||
|
from homeassistant.setup import async_setup_component
|
||||||
|
|
||||||
|
from tests.async_mock import patch
|
||||||
|
|
||||||
|
|
||||||
|
async def test_reload_notify(hass):
|
||||||
|
"""Verify we can reload the notify service."""
|
||||||
|
|
||||||
|
assert await async_setup_component(
|
||||||
|
hass,
|
||||||
|
notify.DOMAIN,
|
||||||
|
{
|
||||||
|
notify.DOMAIN: [
|
||||||
|
{
|
||||||
|
"name": DOMAIN,
|
||||||
|
"platform": DOMAIN,
|
||||||
|
"resource": "http://127.0.0.1/off",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
assert hass.services.has_service(notify.DOMAIN, DOMAIN)
|
||||||
|
|
||||||
|
yaml_path = path.join(
|
||||||
|
_get_fixtures_base_path(),
|
||||||
|
"fixtures",
|
||||||
|
"rest/configuration.yaml",
|
||||||
|
)
|
||||||
|
with patch.object(hass_config, "YAML_CONFIG_FILE", yaml_path):
|
||||||
|
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, "rest_reloaded")
|
||||||
|
|
||||||
|
|
||||||
|
def _get_fixtures_base_path():
|
||||||
|
return path.dirname(path.dirname(path.dirname(__file__)))
|
5
tests/fixtures/rest/configuration.yaml
vendored
5
tests/fixtures/rest/configuration.yaml
vendored
@ -3,3 +3,8 @@ sensor:
|
|||||||
resource: "http://localhost"
|
resource: "http://localhost"
|
||||||
method: GET
|
method: GET
|
||||||
name: rollout
|
name: rollout
|
||||||
|
|
||||||
|
notify:
|
||||||
|
- name: rest_reloaded
|
||||||
|
platform: rest
|
||||||
|
resource: http://127.0.0.1/on
|
||||||
|
Loading…
x
Reference in New Issue
Block a user