config: Add String config value and tests.

This commit is contained in:
Thomas Adamcik 2013-04-01 13:20:33 +02:00
parent c22f0f5f9d
commit 119644c186
2 changed files with 31 additions and 0 deletions

View File

@ -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()

View File

@ -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'))