From cbe9a7d2a3425f39ef7e0125ff2fd6e4560164c0 Mon Sep 17 00:00:00 2001 From: Jan Harkes Date: Mon, 4 Apr 2016 00:38:58 -0400 Subject: [PATCH] Add case insensitive testing to boolean string validation. --- homeassistant/helpers/config_validation.py | 1 + tests/helpers/test_config_validation.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/homeassistant/helpers/config_validation.py b/homeassistant/helpers/config_validation.py index 7edd8c39a7f..1e8e48c00a4 100644 --- a/homeassistant/helpers/config_validation.py +++ b/homeassistant/helpers/config_validation.py @@ -23,6 +23,7 @@ longitude = vol.All(vol.Coerce(float), vol.Range(min=-180, max=180), def boolean(value): """Validate and coerce a boolean value.""" if isinstance(value, str): + value = value.lower() if value in ('1', 'true', 'yes', 'on', 'enable'): return True if value in ('0', 'false', 'no', 'off', 'disable'): diff --git a/tests/helpers/test_config_validation.py b/tests/helpers/test_config_validation.py index 46b04c4ca9d..ab8b102a230 100644 --- a/tests/helpers/test_config_validation.py +++ b/tests/helpers/test_config_validation.py @@ -4,6 +4,21 @@ import voluptuous as vol import homeassistant.helpers.config_validation as cv +def test_boolean(): + """Test boolean validation.""" + schema = vol.Schema(cv.boolean) + + for value in ('T', 'negative', 'lock'): + with pytest.raises(vol.MultipleInvalid): + schema(value) + + for value in ('true', 'On', '1', 'YES', 'enable', 1, True): + assert schema(value) + + for value in ('false', 'Off', '0', 'NO', 'disable', 0, False): + assert not schema(value) + + def test_latitude(): """Test latitude validation.""" schema = vol.Schema(cv.latitude)