summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMartin Kosek <mkosek@redhat.com>2012-09-27 14:18:02 +0200
committerMartin Kosek <mkosek@redhat.com>2012-10-01 13:39:22 +0200
commit988ea368272822f2153563ad34554240e3377d60 (patch)
treeda2cdc48f8631e244ffc244efc6a230c5dbcf49f /tests
parentc16c257145e44599df5b833954fc84f946546ea1 (diff)
downloadfreeipa-988ea368272822f2153563ad34554240e3377d60.tar.gz
freeipa-988ea368272822f2153563ad34554240e3377d60.tar.xz
freeipa-988ea368272822f2153563ad34554240e3377d60.zip
Improve StrEnum validation error message
Do not print list of possible values as "%r" but simply as a list of quoted values which should make it easier to read for users. Also add a special case when there is just one allowed value. https://fedorahosted.org/freeipa/ticket/2869
Diffstat (limited to 'tests')
-rw-r--r--tests/test_ipalib/test_parameters.py25
1 files changed, 23 insertions, 2 deletions
diff --git a/tests/test_ipalib/test_parameters.py b/tests/test_ipalib/test_parameters.py
index 0b6fae375..e6ac91db7 100644
--- a/tests/test_ipalib/test_parameters.py
+++ b/tests/test_ipalib/test_parameters.py
@@ -1140,6 +1140,12 @@ class test_StrEnum(ClassChecker):
"StrEnum('my_enum') values[1]", unicode, 'naughty', str
)
+ # Test that ValueError is raised when list of values is empty
+ badvalues = tuple()
+ e = raises(ValueError, self.cls, 'empty_enum', values=badvalues)
+ assert_equal(str(e), "StrEnum('empty_enum'): list of values must not "
+ "be empty")
+
def test_rules_values(self):
"""
Test the `ipalib.parameters.StrEnum._rule_values` method.
@@ -1147,7 +1153,7 @@ class test_StrEnum(ClassChecker):
values = (u'Hello', u'naughty', u'nurse!')
o = self.cls('my_enum', values=values)
rule = o._rule_values
- translation = u'values=%(values)s'
+ translation = u"values='Hello', 'naughty', 'nurse!'"
dummy = dummy_ugettext(translation)
# Test with passing values:
@@ -1161,7 +1167,22 @@ class test_StrEnum(ClassChecker):
rule(dummy, val),
translation % dict(values=values),
)
- assert_equal(dummy.message, 'must be one of %(values)r')
+ assert_equal(dummy.message, "must be one of %(values)s")
+ dummy.reset()
+
+ # test a special case when we have just one allowed value
+ values = (u'Hello', )
+ o = self.cls('my_enum', values=values)
+ rule = o._rule_values
+ translation = u"value='Hello'"
+ dummy = dummy_ugettext(translation)
+
+ for val in (u'Howdy', u'quiet', u'library!'):
+ assert_equal(
+ rule(dummy, val),
+ translation % dict(values=values),
+ )
+ assert_equal(dummy.message, "must be '%(value)s'")
dummy.reset()