Validate min/max for input_text config (#148909)

This commit is contained in:
karwosts 2025-07-17 07:27:41 -07:00 committed by GitHub
parent b33a556ca5
commit 40cabc8d70
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 26 additions and 12 deletions

View File

@ -15,6 +15,7 @@ from homeassistant.const import (
CONF_MODE,
CONF_NAME,
CONF_UNIT_OF_MEASUREMENT,
MAX_LENGTH_STATE_STATE,
SERVICE_RELOAD,
)
from homeassistant.core import HomeAssistant, ServiceCall, callback
@ -51,8 +52,12 @@ STORAGE_VERSION = 1
STORAGE_FIELDS: VolDictType = {
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_MAX, default=CONF_MAX_VALUE): vol.Coerce(int),
vol.Optional(CONF_MIN, default=CONF_MIN_VALUE): vol.All(
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_ICON): cv.icon,
vol.Optional(CONF_UNIT_OF_MEASUREMENT): cv.string,
@ -84,8 +89,12 @@ CONFIG_SCHEMA = vol.Schema(
lambda value: value or {},
{
vol.Optional(CONF_NAME): cv.string,
vol.Optional(CONF_MIN, default=CONF_MIN_VALUE): vol.Coerce(int),
vol.Optional(CONF_MAX, default=CONF_MAX_VALUE): vol.Coerce(int),
vol.Optional(CONF_MIN, default=CONF_MIN_VALUE): vol.All(
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_ICON): cv.icon,
vol.Optional(CONF_UNIT_OF_MEASUREMENT): cv.string,

View File

@ -81,16 +81,21 @@ async def async_set_value(hass: HomeAssistant, entity_id: str, value: str) -> No
)
async def test_config(hass: HomeAssistant) -> None:
"""Test config."""
invalid_configs = [
@pytest.mark.parametrize(
"invalid_config",
[
None,
{},
{"name with space": None},
{"test_1": {"min": 50, "max": 50}},
]
for cfg in invalid_configs:
assert not await async_setup_component(hass, DOMAIN, {DOMAIN: cfg})
{"test_1": {"min": 51, "max": 50}},
{"test_1": {"min": -1, "max": 100}},
{"test_1": {"min": 0, "max": 256}},
{"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: