diff options
author | Martin Kosek <mkosek@redhat.com> | 2012-09-27 14:18:02 +0200 |
---|---|---|
committer | Martin Kosek <mkosek@redhat.com> | 2012-10-01 13:39:22 +0200 |
commit | 988ea368272822f2153563ad34554240e3377d60 (patch) | |
tree | da2cdc48f8631e244ffc244efc6a230c5dbcf49f /tests | |
parent | c16c257145e44599df5b833954fc84f946546ea1 (diff) | |
download | freeipa-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.py | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/tests/test_ipalib/test_parameters.py b/tests/test_ipalib/test_parameters.py index 0b6fae37..e6ac91db 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() |