summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ipalib/frontend.py4
-rw-r--r--ipalib/tests/test_frontend.py24
2 files changed, 24 insertions, 4 deletions
diff --git a/ipalib/frontend.py b/ipalib/frontend.py
index ff0d3492..7e22a9fa 100644
--- a/ipalib/frontend.py
+++ b/ipalib/frontend.py
@@ -128,7 +128,8 @@ class Param(plugable.ReadOnly):
default=None,
default_from=None,
rules=tuple(),
- normalize=None
+ normalize=None,
+ primary_key=False,
)
def __init__(self, name, type_=ipa_types.Unicode(), **kw):
@@ -155,6 +156,7 @@ class Param(plugable.ReadOnly):
self.__normalize = self.__kw['normalize']
self.rules = self.__check_type(tuple, 'rules')
self.all_rules = (type_.validate,) + self.rules
+ self.primary_key = self.__check_type(bool, 'primary_key')
lock(self)
def __clone__(self, **override):
diff --git a/ipalib/tests/test_frontend.py b/ipalib/tests/test_frontend.py
index cc71f1c9..3d01ed11 100644
--- a/ipalib/tests/test_frontend.py
+++ b/ipalib/tests/test_frontend.py
@@ -140,6 +140,8 @@ class test_Param(ClassChecker):
type_ = ipa_types.Unicode()
o = self.cls(name, type_)
assert o.__islocked__() is True
+
+ # Test default values
assert read_only(o, 'name') is name
assert read_only(o, 'type') is type_
assert read_only(o, 'doc') == ''
@@ -149,12 +151,28 @@ class test_Param(ClassChecker):
assert read_only(o, 'default_from') is None
assert read_only(o, 'rules') == tuple()
assert read_only(o, 'all_rules') == (type_.validate,)
-
- # Check default type_:
+ assert read_only(o, 'primary_key') is False
+
+ # Test all kw args:
+ assert self.cls(name, doc='the doc').doc == 'the doc'
+ assert self.cls(name, required=False).required is False
+ assert self.cls(name, multivalue=True).multivalue is True
+ assert self.cls(name, default=u'Hello').default == u'Hello'
+ df = frontend.DefaultFrom(lambda f, l: f + l,
+ 'first', 'last',
+ )
+ assert self.cls(name, default_from=df).default_from == df
+ rules = (lambda whatever: 'Not okay!',)
+ o = self.cls(name, rules=rules)
+ assert o.rules is rules
+ assert o.all_rules[1:] == rules
+ assert self.cls(name, primary_key=True).primary_key is True
+
+ # Test default type_:
o = self.cls(name)
assert isinstance(o.type, ipa_types.Unicode)
- # Check param spec parsing:
+ # Test param spec parsing:
o = self.cls('name?')
assert o.name == 'name'
assert o.required is False