mirror of
https://github.com/home-assistant/core.git
synced 2025-07-21 12:17:07 +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 homeassistant.const import (
|
||||
ATTR_FRIENDLY_NAME, ATTR_HIDDEN, ATTR_ASSUMED_STATE,
|
||||
CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME, CONF_PACKAGES, CONF_UNIT_SYSTEM,
|
||||
CONF_TIME_ZONE, CONF_ELEVATION, CONF_UNIT_SYSTEM_METRIC,
|
||||
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
|
||||
})
|
||||
|
||||
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({
|
||||
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.Schema({cv.string: dict}),
|
||||
vol.Schema({cv.string: CUSTOMIZE_DICT_SCHEMA}),
|
||||
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({
|
||||
|
@ -12,6 +12,7 @@ from voluptuous import MultipleInvalid
|
||||
from homeassistant.core import DOMAIN, HomeAssistantError, Config
|
||||
import homeassistant.config as config_util
|
||||
from homeassistant.const import (
|
||||
ATTR_FRIENDLY_NAME, ATTR_HIDDEN, ATTR_ASSUMED_STATE,
|
||||
CONF_LATITUDE, CONF_LONGITUDE, CONF_UNIT_SYSTEM, CONF_NAME,
|
||||
CONF_TIME_ZONE, CONF_ELEVATION, CONF_CUSTOMIZE, __version__,
|
||||
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):
|
||||
"""Test that customize_glob preserves order."""
|
||||
conf = config_util.CORE_CONFIG_SCHEMA(
|
||||
|
Loading…
x
Reference in New Issue
Block a user