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
pull/11873/merge
Rene Nulsch 2018-01-27 07:31:40 +01:00 committed by Paulus Schoutsen
parent 74b0740e1c
commit cad0bde95b
2 changed files with 27 additions and 7 deletions

View File

@ -8,22 +8,28 @@ import asyncio
import voluptuous as vol
from homeassistant.const import (CONF_ICON, CONF_URL)
import homeassistant.helpers.config_validation as cv
DOMAIN = 'panel_iframe'
DEPENDENCIES = ['frontend']
DOMAIN = 'panel_iframe'
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({
DOMAIN: vol.Schema({
cv.slug: {
vol.Optional(CONF_TITLE): cv.string,
vol.Optional(CONF_ICON): cv.icon,
# pylint: disable=no-value-for-parameter
vol.Required(CONF_URL): vol.Url(),
vol.Required(CONF_URL): vol.Any(
vol.Match(
CONF_RELATIVE_URL_REGEX,
msg=CONF_RELATIVE_URL_ERROR_MSG),
cv.url),
}})}, extra=vol.ALLOW_EXTRA)

View File

@ -11,11 +11,11 @@ from tests.common import get_test_home_assistant
class TestPanelIframe(unittest.TestCase):
"""Test the panel_iframe component."""
def setup_method(self, method):
def setUp(self):
"""Setup things to be run when tests are started."""
self.hass = get_test_home_assistant()
def teardown_method(self, method):
def tearDown(self):
"""Stop everything that was started."""
self.hass.stop()
@ -50,6 +50,11 @@ class TestPanelIframe(unittest.TestCase):
'title': 'Weather',
'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_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',
}