From 119644c186091efc956bb219052a173525cf3346 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Mon, 1 Apr 2013 13:20:33 +0200 Subject: [PATCH] config: Add String config value and tests. --- mopidy/utils/config.py | 10 ++++++++++ tests/utils/config_test.py | 21 +++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/mopidy/utils/config.py b/mopidy/utils/config.py index 10f1bf78..a34fccb6 100644 --- a/mopidy/utils/config.py +++ b/mopidy/utils/config.py @@ -70,3 +70,13 @@ class ConfigValue(object): if self.secret: return '********' return self.serialize(value) + + +class String(ConfigValue): + def deserialize(self, value): + value = value.strip() + validate_choice(value, self.choices) + return value + + def serialize(self, value): + return value.strip() diff --git a/tests/utils/config_test.py b/tests/utils/config_test.py index c1572c78..28436b5c 100644 --- a/tests/utils/config_test.py +++ b/tests/utils/config_test.py @@ -86,3 +86,24 @@ class ConfigValueTest(unittest.TestCase): def test_format_masks_secrets(self): value = config.ConfigValue(secret=True) self.assertEqual('********', value.format(object())) + + +class StringTest(unittest.TestCase): + def test_deserialize_strips_whitespace(self): + value = config.String() + self.assertEqual('foo', value.deserialize(' foo ')) + + def test_deserialize_enforces_choices(self): + value = config.String(choices=['foo', 'bar', 'baz']) + + self.assertEqual('foo', value.deserialize('foo')) + with self.assertRaises(ValueError): + value.deserialize('foobar') + + def test_serialize_strips_whitespace(self): + value = config.String() + self.assertEqual('foo', value.serialize(' foo ')) + + def test_format_masks_secrets(self): + value = config.String(secret=True) + self.assertEqual('********', value.format('s3cret'))