mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 20:57:21 +00:00
Validate basic customize entries (#13478)
* Added schema to validate customize dictionary * Added test
This commit is contained in:
parent
81cf0dacfe
commit
8a0facb747
@ -13,6 +13,7 @@ import voluptuous as vol
|
|||||||
from voluptuous.humanize import humanize_error
|
from voluptuous.humanize import humanize_error
|
||||||
|
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
|
ATTR_FRIENDLY_NAME, ATTR_HIDDEN, ATTR_ASSUMED_STATE,
|
||||||
CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME, CONF_PACKAGES, CONF_UNIT_SYSTEM,
|
CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME, CONF_PACKAGES, CONF_UNIT_SYSTEM,
|
||||||
CONF_TIME_ZONE, CONF_ELEVATION, CONF_UNIT_SYSTEM_METRIC,
|
CONF_TIME_ZONE, CONF_ELEVATION, CONF_UNIT_SYSTEM_METRIC,
|
||||||
CONF_UNIT_SYSTEM_IMPERIAL, CONF_TEMPERATURE_UNIT, TEMP_CELSIUS,
|
CONF_UNIT_SYSTEM_IMPERIAL, CONF_TEMPERATURE_UNIT, TEMP_CELSIUS,
|
||||||
@ -129,13 +130,19 @@ PACKAGES_CONFIG_SCHEMA = vol.Schema({
|
|||||||
{cv.slug: vol.Any(dict, list, None)}) # Only slugs for component names
|
{cv.slug: vol.Any(dict, list, None)}) # Only slugs for component names
|
||||||
})
|
})
|
||||||
|
|
||||||
|
CUSTOMIZE_DICT_SCHEMA = vol.Schema({
|
||||||
|
vol.Optional(ATTR_FRIENDLY_NAME): cv.string,
|
||||||
|
vol.Optional(ATTR_HIDDEN): cv.boolean,
|
||||||
|
vol.Optional(ATTR_ASSUMED_STATE): cv.boolean,
|
||||||
|
}, extra=vol.ALLOW_EXTRA)
|
||||||
|
|
||||||
CUSTOMIZE_CONFIG_SCHEMA = vol.Schema({
|
CUSTOMIZE_CONFIG_SCHEMA = vol.Schema({
|
||||||
vol.Optional(CONF_CUSTOMIZE, default={}):
|
vol.Optional(CONF_CUSTOMIZE, default={}):
|
||||||
vol.Schema({cv.entity_id: dict}),
|
vol.Schema({cv.entity_id: CUSTOMIZE_DICT_SCHEMA}),
|
||||||
vol.Optional(CONF_CUSTOMIZE_DOMAIN, default={}):
|
vol.Optional(CONF_CUSTOMIZE_DOMAIN, default={}):
|
||||||
vol.Schema({cv.string: dict}),
|
vol.Schema({cv.string: CUSTOMIZE_DICT_SCHEMA}),
|
||||||
vol.Optional(CONF_CUSTOMIZE_GLOB, default={}):
|
vol.Optional(CONF_CUSTOMIZE_GLOB, default={}):
|
||||||
vol.Schema({cv.string: OrderedDict}),
|
vol.Schema({cv.string: CUSTOMIZE_DICT_SCHEMA}),
|
||||||
})
|
})
|
||||||
|
|
||||||
CORE_CONFIG_SCHEMA = CUSTOMIZE_CONFIG_SCHEMA.extend({
|
CORE_CONFIG_SCHEMA = CUSTOMIZE_CONFIG_SCHEMA.extend({
|
||||||
|
@ -12,6 +12,7 @@ from voluptuous import MultipleInvalid
|
|||||||
from homeassistant.core import DOMAIN, HomeAssistantError, Config
|
from homeassistant.core import DOMAIN, HomeAssistantError, Config
|
||||||
import homeassistant.config as config_util
|
import homeassistant.config as config_util
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
|
ATTR_FRIENDLY_NAME, ATTR_HIDDEN, ATTR_ASSUMED_STATE,
|
||||||
CONF_LATITUDE, CONF_LONGITUDE, CONF_UNIT_SYSTEM, CONF_NAME,
|
CONF_LATITUDE, CONF_LONGITUDE, CONF_UNIT_SYSTEM, CONF_NAME,
|
||||||
CONF_TIME_ZONE, CONF_ELEVATION, CONF_CUSTOMIZE, __version__,
|
CONF_TIME_ZONE, CONF_ELEVATION, CONF_CUSTOMIZE, __version__,
|
||||||
CONF_UNIT_SYSTEM_METRIC, CONF_UNIT_SYSTEM_IMPERIAL, CONF_TEMPERATURE_UNIT)
|
CONF_UNIT_SYSTEM_METRIC, CONF_UNIT_SYSTEM_IMPERIAL, CONF_TEMPERATURE_UNIT)
|
||||||
@ -235,6 +236,29 @@ class TestConfig(unittest.TestCase):
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
def test_customize_dict_schema(self):
|
||||||
|
"""Test basic customize config validation."""
|
||||||
|
values = (
|
||||||
|
{ATTR_FRIENDLY_NAME: None},
|
||||||
|
{ATTR_HIDDEN: '2'},
|
||||||
|
{ATTR_ASSUMED_STATE: '2'},
|
||||||
|
)
|
||||||
|
|
||||||
|
for val in values:
|
||||||
|
print(val)
|
||||||
|
with pytest.raises(MultipleInvalid):
|
||||||
|
config_util.CUSTOMIZE_DICT_SCHEMA(val)
|
||||||
|
|
||||||
|
assert config_util.CUSTOMIZE_DICT_SCHEMA({
|
||||||
|
ATTR_FRIENDLY_NAME: 2,
|
||||||
|
ATTR_HIDDEN: '1',
|
||||||
|
ATTR_ASSUMED_STATE: '0',
|
||||||
|
}) == {
|
||||||
|
ATTR_FRIENDLY_NAME: '2',
|
||||||
|
ATTR_HIDDEN: True,
|
||||||
|
ATTR_ASSUMED_STATE: False
|
||||||
|
}
|
||||||
|
|
||||||
def test_customize_glob_is_ordered(self):
|
def test_customize_glob_is_ordered(self):
|
||||||
"""Test that customize_glob preserves order."""
|
"""Test that customize_glob preserves order."""
|
||||||
conf = config_util.CORE_CONFIG_SCHEMA(
|
conf = config_util.CORE_CONFIG_SCHEMA(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user