mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
28: Added new base.Register class that is a more generic way of doing the plugin registration and doesn't itself instatiate any plugins; added corresponding unit tests
This commit is contained in:
@@ -347,3 +347,64 @@ def test_Registar():
|
||||
|
||||
assert len(r.commands) == 3
|
||||
assert list(r.commands) == sorted(['kinit', 'add_user', 'del_user'])
|
||||
|
||||
|
||||
class test_Register():
|
||||
r = base.Register()
|
||||
|
||||
assert set(r) == set(['Command', 'Object', 'Method', 'Property'])
|
||||
|
||||
|
||||
class wrong_base(object):
|
||||
pass
|
||||
|
||||
class krbtest(base.Command):
|
||||
pass
|
||||
|
||||
class user(base.Object):
|
||||
pass
|
||||
|
||||
class user__add(base.Method):
|
||||
pass
|
||||
|
||||
class user__firstname(base.Property):
|
||||
pass
|
||||
|
||||
|
||||
|
||||
|
||||
#r(wrong_base)
|
||||
#r(user())
|
||||
|
||||
# Check that exception is raised trying to register an instance of a
|
||||
# class of a correct base:
|
||||
raised = False
|
||||
try:
|
||||
r(user())
|
||||
except exceptions.RegistrationError:
|
||||
raised = True
|
||||
|
||||
# Check that exception is raised trying to register class of wrong base:
|
||||
raised = False
|
||||
try:
|
||||
r(wrong_base)
|
||||
except exceptions.RegistrationError:
|
||||
raised = True
|
||||
assert raised
|
||||
|
||||
# Check that added a valid class works
|
||||
for cls in (krbtest, user, user__add, user__firstname):
|
||||
r(cls)
|
||||
key = cls.__bases__[0].__name__
|
||||
d = r[key]
|
||||
assert d.keys() == [cls.__name__]
|
||||
assert d.values() == [cls]
|
||||
# Check that a copy is returned
|
||||
d2 = r[key]
|
||||
assert d2 == d
|
||||
assert d2 is not d
|
||||
p = getattr(r, key)
|
||||
assert isinstance(p, base.Proxy)
|
||||
# Check that same instance is returned
|
||||
assert p is getattr(r, key)
|
||||
assert getattr(p, cls.__name__) is cls
|
||||
|
||||
Reference in New Issue
Block a user