mirror of
https://github.com/home-assistant/core.git
synced 2025-07-27 23:27:37 +00:00
Validate min/max for input_text config (#148909)
This commit is contained in:
parent
b33a556ca5
commit
40cabc8d70
@ -15,6 +15,7 @@ from homeassistant.const import (
|
|||||||
CONF_MODE,
|
CONF_MODE,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
CONF_UNIT_OF_MEASUREMENT,
|
CONF_UNIT_OF_MEASUREMENT,
|
||||||
|
MAX_LENGTH_STATE_STATE,
|
||||||
SERVICE_RELOAD,
|
SERVICE_RELOAD,
|
||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant, ServiceCall, callback
|
from homeassistant.core import HomeAssistant, ServiceCall, callback
|
||||||
@ -51,8 +52,12 @@ STORAGE_VERSION = 1
|
|||||||
|
|
||||||
STORAGE_FIELDS: VolDictType = {
|
STORAGE_FIELDS: VolDictType = {
|
||||||
vol.Required(CONF_NAME): vol.All(str, vol.Length(min=1)),
|
vol.Required(CONF_NAME): vol.All(str, vol.Length(min=1)),
|
||||||
vol.Optional(CONF_MIN, default=CONF_MIN_VALUE): vol.Coerce(int),
|
vol.Optional(CONF_MIN, default=CONF_MIN_VALUE): vol.All(
|
||||||
vol.Optional(CONF_MAX, default=CONF_MAX_VALUE): vol.Coerce(int),
|
vol.Coerce(int), vol.Range(0, MAX_LENGTH_STATE_STATE)
|
||||||
|
),
|
||||||
|
vol.Optional(CONF_MAX, default=CONF_MAX_VALUE): vol.All(
|
||||||
|
vol.Coerce(int), vol.Range(1, MAX_LENGTH_STATE_STATE)
|
||||||
|
),
|
||||||
vol.Optional(CONF_INITIAL, ""): cv.string,
|
vol.Optional(CONF_INITIAL, ""): cv.string,
|
||||||
vol.Optional(CONF_ICON): cv.icon,
|
vol.Optional(CONF_ICON): cv.icon,
|
||||||
vol.Optional(CONF_UNIT_OF_MEASUREMENT): cv.string,
|
vol.Optional(CONF_UNIT_OF_MEASUREMENT): cv.string,
|
||||||
@ -84,8 +89,12 @@ CONFIG_SCHEMA = vol.Schema(
|
|||||||
lambda value: value or {},
|
lambda value: value or {},
|
||||||
{
|
{
|
||||||
vol.Optional(CONF_NAME): cv.string,
|
vol.Optional(CONF_NAME): cv.string,
|
||||||
vol.Optional(CONF_MIN, default=CONF_MIN_VALUE): vol.Coerce(int),
|
vol.Optional(CONF_MIN, default=CONF_MIN_VALUE): vol.All(
|
||||||
vol.Optional(CONF_MAX, default=CONF_MAX_VALUE): vol.Coerce(int),
|
vol.Coerce(int), vol.Range(0, MAX_LENGTH_STATE_STATE)
|
||||||
|
),
|
||||||
|
vol.Optional(CONF_MAX, default=CONF_MAX_VALUE): vol.All(
|
||||||
|
vol.Coerce(int), vol.Range(1, MAX_LENGTH_STATE_STATE)
|
||||||
|
),
|
||||||
vol.Optional(CONF_INITIAL): cv.string,
|
vol.Optional(CONF_INITIAL): cv.string,
|
||||||
vol.Optional(CONF_ICON): cv.icon,
|
vol.Optional(CONF_ICON): cv.icon,
|
||||||
vol.Optional(CONF_UNIT_OF_MEASUREMENT): cv.string,
|
vol.Optional(CONF_UNIT_OF_MEASUREMENT): cv.string,
|
||||||
|
@ -81,16 +81,21 @@ async def async_set_value(hass: HomeAssistant, entity_id: str, value: str) -> No
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
async def test_config(hass: HomeAssistant) -> None:
|
@pytest.mark.parametrize(
|
||||||
"""Test config."""
|
"invalid_config",
|
||||||
invalid_configs = [
|
[
|
||||||
None,
|
None,
|
||||||
{},
|
|
||||||
{"name with space": None},
|
{"name with space": None},
|
||||||
{"test_1": {"min": 50, "max": 50}},
|
{"test_1": {"min": 51, "max": 50}},
|
||||||
]
|
{"test_1": {"min": -1, "max": 100}},
|
||||||
for cfg in invalid_configs:
|
{"test_1": {"min": 0, "max": 256}},
|
||||||
assert not await async_setup_component(hass, DOMAIN, {DOMAIN: cfg})
|
{"test_1": {"min": 0, "max": 3, "initial": "aaaaa"}},
|
||||||
|
],
|
||||||
|
)
|
||||||
|
async def test_config(hass: HomeAssistant, invalid_config) -> None:
|
||||||
|
"""Test config."""
|
||||||
|
|
||||||
|
assert not await async_setup_component(hass, DOMAIN, {DOMAIN: invalid_config})
|
||||||
|
|
||||||
|
|
||||||
async def test_set_value(hass: HomeAssistant) -> None:
|
async def test_set_value(hass: HomeAssistant) -> None:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user