summaryrefslogtreecommitdiffstats
path: root/ipalib/tests/test_frontend.py
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-09-24 19:45:46 +0000
committerJason Gerard DeRose <jderose@redhat.com>2008-09-24 19:45:46 +0000
commitf8bb60f02dc3cbb48c2cc6305e095e6936f5a0d6 (patch)
treecaf207b1fdd00bc827ada0b10cbbb2851b8aa887 /ipalib/tests/test_frontend.py
parenta79434584eaab5692d716368b54572aa2b6be70c (diff)
downloadfreeipa.git-f8bb60f02dc3cbb48c2cc6305e095e6936f5a0d6.tar.gz
freeipa.git-f8bb60f02dc3cbb48c2cc6305e095e6936f5a0d6.tar.xz
freeipa.git-f8bb60f02dc3cbb48c2cc6305e095e6936f5a0d6.zip
344: Added Param.__clone__() method; added corresponding unit tests
Diffstat (limited to 'ipalib/tests/test_frontend.py')
-rw-r--r--ipalib/tests/test_frontend.py33
1 files changed, 31 insertions, 2 deletions
diff --git a/ipalib/tests/test_frontend.py b/ipalib/tests/test_frontend.py
index 43c1abf2..cc71f1c9 100644
--- a/ipalib/tests/test_frontend.py
+++ b/ipalib/tests/test_frontend.py
@@ -147,7 +147,8 @@ class test_Param(ClassChecker):
assert read_only(o, 'multivalue') is False
assert read_only(o, 'default') is None
assert read_only(o, 'default_from') is None
- assert read_only(o, 'rules') == (type_.validate,)
+ assert read_only(o, 'rules') == tuple()
+ assert read_only(o, 'all_rules') == (type_.validate,)
# Check default type_:
o = self.cls(name)
@@ -173,6 +174,33 @@ class test_Param(ClassChecker):
assert str(e) == \
'Param.__init__() takes no such kwargs: another, whatever'
+ def test_clone(self):
+ """
+ Test the `frontend.Param.__clone__` method.
+ """
+ def compare(o, kw):
+ for (k, v) in kw.iteritems():
+ assert getattr(o, k) == v, (k, v, getattr(o, k))
+ default = dict(
+ required=False,
+ multivalue=False,
+ default=None,
+ default_from=None,
+ rules=tuple(),
+ )
+ name = 'hair_color?'
+ type_ = ipa_types.Int()
+ o = self.cls(name, type_)
+ compare(o, default)
+
+ override = dict(multivalue=True, default=42)
+ d = dict(default)
+ d.update(override)
+ clone = o.__clone__(**override)
+ assert clone.name == 'hair_color'
+ assert clone.type is o.type
+ compare(clone, d)
+
def test_convert(self):
"""
Test the `frontend.Param.convert` method.
@@ -277,7 +305,8 @@ class test_Param(ClassChecker):
# Scenario 1: multivalue=False
o = self.cls(name, type_, rules=my_rules)
- assert o.rules == (type_.validate, case_rule)
+ assert o.rules == my_rules
+ assert o.all_rules == (type_.validate, case_rule)
o.validate(okay)
e = raises(errors.RuleError, o.validate, fail_case)
assert e.name is name