summaryrefslogtreecommitdiffstats
path: root/ipalib/tests
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-08-28 20:30:08 +0000
committerJason Gerard DeRose <jderose@redhat.com>2008-08-28 20:30:08 +0000
commit992a5dadbea27b21075617daf4216396d18404de (patch)
treecc0c1c0d16d34ba10302ab4942f5a0efc7c11f9f /ipalib/tests
parenta6ec94da601273719e44c69c4d7c23776ab30f3a (diff)
downloadfreeipa.git-992a5dadbea27b21075617daf4216396d18404de.tar.gz
freeipa.git-992a5dadbea27b21075617daf4216396d18404de.tar.xz
freeipa.git-992a5dadbea27b21075617daf4216396d18404de.zip
218: Finished unit tests for Option2.validate(), Option2.validate_scalar()
Diffstat (limited to 'ipalib/tests')
-rw-r--r--ipalib/tests/test_public.py57
1 files changed, 56 insertions, 1 deletions
diff --git a/ipalib/tests/test_public.py b/ipalib/tests/test_public.py
index 5b5d1d4b..ed4c75e5 100644
--- a/ipalib/tests/test_public.py
+++ b/ipalib/tests/test_public.py
@@ -128,7 +128,62 @@ class test_Option2(ClassChecker):
assert read_only(o, 'default_from') is None
assert read_only(o, 'rules') == (type_.validate,)
-
+ def test_validate(self):
+ # Constructor arguments
+ name = 'sn'
+ doc = 'User last name'
+ type_ = ipa_types.Unicode()
+ def case_rule(value):
+ if not value.islower():
+ return 'Must be lower case'
+ my_rules = (case_rule,)
+
+ # Some test values:
+ okay = u'whatever'
+ fail_case = u'Whatever'
+ fail_type = 'whatever'
+
+ # Test validate() and validate_scalar() when multivalue=False:
+ o = self.cls(name, doc, type_, rules=my_rules)
+ assert o.rules == (type_.validate, case_rule)
+ for m in [o.validate, o.validate_scalar]:
+ # Test a valid value:
+ m(okay)
+ # Check that RuleError is raised with wrong case:
+ e = raises(errors.RuleError, m, fail_case)
+ assert e.name is name
+ assert e.value is fail_case
+ assert e.error == 'Must be lower case'
+ # Test a RuleError is raise with wrong type:
+ e = raises(errors.RuleError, m, fail_type)
+ assert e.name is name
+ assert e.value is fail_type
+ assert e.error == 'Must be a string'
+
+ # Test validate() when multivalue=True:
+ o = self.cls(name, doc, type_, multivalue=True, rules=my_rules)
+ def check_type_error(value):
+ e = raises(TypeError, o.validate, value)
+ assert str(e) == (
+ 'when multivalue, value must be tuple; got %r' % value
+ )
+ # Check a valid value:
+ check_type_error(okay)
+ o.validate((okay,))
+ # Check that RuleError is raised with wrong case:
+ check_type_error(fail_case)
+ for value in [(okay, fail_case), (fail_case, okay)]:
+ e = raises(errors.RuleError, o.validate, value)
+ assert e.name is name
+ assert e.value is fail_case
+ assert e.error == 'Must be lower case'
+ # Test a RuleError is raise with wrong type:
+ check_type_error(fail_type)
+ for value in [(okay, fail_type), (fail_type, okay)]:
+ e = raises(errors.RuleError, o.validate, value)
+ assert e.name is name
+ assert e.value is fail_type
+ assert e.error == 'Must be a string'
class test_Option(ClassChecker):