Drop frontend metadata from entity service schemas (#69894)
This commit is contained in:
parent
d1f4b7a3d9
commit
a9742cc445
2 changed files with 28 additions and 0 deletions
|
@ -1021,6 +1021,8 @@ def make_entity_service_schema(
|
||||||
vol.All(
|
vol.All(
|
||||||
vol.Schema(
|
vol.Schema(
|
||||||
{
|
{
|
||||||
|
# The frontend stores data here. Don't use in core.
|
||||||
|
vol.Remove("metadata"): dict,
|
||||||
**schema,
|
**schema,
|
||||||
**ENTITY_SERVICE_FIELDS,
|
**ENTITY_SERVICE_FIELDS,
|
||||||
},
|
},
|
||||||
|
|
|
@ -448,6 +448,32 @@ def test_entity_service_schema():
|
||||||
for value in options:
|
for value in options:
|
||||||
schema(value)
|
schema(value)
|
||||||
|
|
||||||
|
options = (
|
||||||
|
{
|
||||||
|
"required": 1,
|
||||||
|
"entity_id": "light.kitchen",
|
||||||
|
"metadata": {"some": "frontend_stuff"},
|
||||||
|
},
|
||||||
|
)
|
||||||
|
for value in options:
|
||||||
|
validated = schema(value)
|
||||||
|
assert "metadata" not in validated
|
||||||
|
|
||||||
|
|
||||||
|
def test_entity_service_schema_with_metadata():
|
||||||
|
"""Test make_entity_service_schema with overridden metadata key."""
|
||||||
|
schema = cv.make_entity_service_schema({vol.Required("metadata"): cv.positive_int})
|
||||||
|
|
||||||
|
options = ({"metadata": {"some": "frontend_stuff"}, "entity_id": "light.kitchen"},)
|
||||||
|
for value in options:
|
||||||
|
with pytest.raises(vol.MultipleInvalid):
|
||||||
|
cv.SERVICE_SCHEMA(value)
|
||||||
|
|
||||||
|
options = ({"metadata": 1, "entity_id": "light.kitchen"},)
|
||||||
|
for value in options:
|
||||||
|
validated = schema(value)
|
||||||
|
assert "metadata" in validated
|
||||||
|
|
||||||
|
|
||||||
def test_slug():
|
def test_slug():
|
||||||
"""Test slug validation."""
|
"""Test slug validation."""
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue