Disallow list/dict for string configuration (#17202)

This commit is contained in:
Anders Melchiorsen 2018-10-07 12:35:44 +02:00 committed by Paulus Schoutsen
parent c8266c6692
commit 6e81ae096e
2 changed files with 13 additions and 4 deletions

View File

@ -335,9 +335,12 @@ def slugify(value):
def string(value: Any) -> str:
"""Coerce value to string, except for None."""
if value is not None:
return str(value)
raise vol.Invalid('string value is None')
if value is None:
raise vol.Invalid('string value is None')
if isinstance(value, (list, dict)):
raise vol.Invalid('value should be a string')
return str(value)
def temperature_unit(value) -> str:

View File

@ -356,9 +356,15 @@ def test_string():
"""Test string validation."""
schema = vol.Schema(cv.string)
with pytest.raises(vol.MultipleInvalid):
with pytest.raises(vol.Invalid):
schema(None)
with pytest.raises(vol.Invalid):
schema([])
with pytest.raises(vol.Invalid):
schema({})
for value in (True, 1, 'hello'):
schema(value)