Panel_Iframe - Allow relative urls in config (#11832)
* Panel_Iframe - Allow relative urls in config * change regex to check for starting forward slash only * Change error message and const name
This commit is contained in:
parent
74b0740e1c
commit
cad0bde95b
2 changed files with 27 additions and 7 deletions
|
@ -8,22 +8,28 @@ import asyncio
|
||||||
|
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
|
from homeassistant.const import (CONF_ICON, CONF_URL)
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
|
||||||
DOMAIN = 'panel_iframe'
|
|
||||||
DEPENDENCIES = ['frontend']
|
DEPENDENCIES = ['frontend']
|
||||||
|
|
||||||
|
DOMAIN = 'panel_iframe'
|
||||||
|
|
||||||
CONF_TITLE = 'title'
|
CONF_TITLE = 'title'
|
||||||
CONF_ICON = 'icon'
|
|
||||||
CONF_URL = 'url'
|
CONF_RELATIVE_URL_ERROR_MSG = "Invalid relative URL. Absolute path required."
|
||||||
|
CONF_RELATIVE_URL_REGEX = r'\A/'
|
||||||
|
|
||||||
CONFIG_SCHEMA = vol.Schema({
|
CONFIG_SCHEMA = vol.Schema({
|
||||||
DOMAIN: vol.Schema({
|
DOMAIN: vol.Schema({
|
||||||
cv.slug: {
|
cv.slug: {
|
||||||
vol.Optional(CONF_TITLE): cv.string,
|
vol.Optional(CONF_TITLE): cv.string,
|
||||||
vol.Optional(CONF_ICON): cv.icon,
|
vol.Optional(CONF_ICON): cv.icon,
|
||||||
# pylint: disable=no-value-for-parameter
|
vol.Required(CONF_URL): vol.Any(
|
||||||
vol.Required(CONF_URL): vol.Url(),
|
vol.Match(
|
||||||
|
CONF_RELATIVE_URL_REGEX,
|
||||||
|
msg=CONF_RELATIVE_URL_ERROR_MSG),
|
||||||
|
cv.url),
|
||||||
}})}, extra=vol.ALLOW_EXTRA)
|
}})}, extra=vol.ALLOW_EXTRA)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -11,11 +11,11 @@ from tests.common import get_test_home_assistant
|
||||||
class TestPanelIframe(unittest.TestCase):
|
class TestPanelIframe(unittest.TestCase):
|
||||||
"""Test the panel_iframe component."""
|
"""Test the panel_iframe component."""
|
||||||
|
|
||||||
def setup_method(self, method):
|
def setUp(self):
|
||||||
"""Setup things to be run when tests are started."""
|
"""Setup things to be run when tests are started."""
|
||||||
self.hass = get_test_home_assistant()
|
self.hass = get_test_home_assistant()
|
||||||
|
|
||||||
def teardown_method(self, method):
|
def tearDown(self):
|
||||||
"""Stop everything that was started."""
|
"""Stop everything that was started."""
|
||||||
self.hass.stop()
|
self.hass.stop()
|
||||||
|
|
||||||
|
@ -50,6 +50,11 @@ class TestPanelIframe(unittest.TestCase):
|
||||||
'title': 'Weather',
|
'title': 'Weather',
|
||||||
'url': 'https://www.wunderground.com/us/ca/san-diego',
|
'url': 'https://www.wunderground.com/us/ca/san-diego',
|
||||||
},
|
},
|
||||||
|
'api': {
|
||||||
|
'icon': 'mdi:weather',
|
||||||
|
'title': 'Api',
|
||||||
|
'url': '/api',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -72,3 +77,12 @@ class TestPanelIframe(unittest.TestCase):
|
||||||
'url': '/frontend_es5/panels/ha-panel-iframe-md5md5.html',
|
'url': '/frontend_es5/panels/ha-panel-iframe-md5md5.html',
|
||||||
'url_path': 'weather',
|
'url_path': 'weather',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
assert panels.get('api').to_response(self.hass, None) == {
|
||||||
|
'component_name': 'iframe',
|
||||||
|
'config': {'url': '/api'},
|
||||||
|
'icon': 'mdi:weather',
|
||||||
|
'title': 'Api',
|
||||||
|
'url': '/frontend_es5/panels/ha-panel-iframe-md5md5.html',
|
||||||
|
'url_path': 'api',
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue