summaryrefslogtreecommitdiffstats
path: root/ipalib/tests/test_plugable.py
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-08-05 03:21:52 +0000
committerJason Gerard DeRose <jderose@redhat.com>2008-08-05 03:21:52 +0000
commitc3bf5ad8579e6f09aba558a68de947b2be398619 (patch)
treefe2ea34541ff5a20d6ca3ef9bba82ea083157d2c /ipalib/tests/test_plugable.py
parent74f5719078adfcfdf8b98bf97f0828dd150c840d (diff)
downloadfreeipa.git-c3bf5ad8579e6f09aba558a68de947b2be398619.tar.gz
freeipa.git-c3bf5ad8579e6f09aba558a68de947b2be398619.tar.xz
freeipa.git-c3bf5ad8579e6f09aba558a68de947b2be398619.zip
43: Fleshed out new plugable.API class; added corresponding unit tests
Diffstat (limited to 'ipalib/tests/test_plugable.py')
-rw-r--r--ipalib/tests/test_plugable.py67
1 files changed, 67 insertions, 0 deletions
diff --git a/ipalib/tests/test_plugable.py b/ipalib/tests/test_plugable.py
index a6f1e7cd..f5d469af 100644
--- a/ipalib/tests/test_plugable.py
+++ b/ipalib/tests/test_plugable.py
@@ -309,3 +309,70 @@ def test_NameSpace():
def test_API():
assert issubclass(plugable.API, plugable.ReadOnly)
+
+ # Setup the test plugins, create the Registrar:
+ class ExampleProxy(plugable.Proxy):
+ __slots__ = ['method']
+
+ class base0(plugable.Plugin):
+ proxy = ExampleProxy
+
+ def method(self, n):
+ return n
+
+ class base1(plugable.Plugin):
+ proxy = ExampleProxy
+
+ def method(self, n):
+ return n + 1
+
+ r = plugable.Registrar(base0, base1)
+
+ class base0_plugin0(base0):
+ pass
+ r(base0_plugin0)
+
+ class base0_plugin1(base0):
+ pass
+ r(base0_plugin1)
+
+ class base0_plugin2(base0):
+ pass
+ r(base0_plugin2)
+
+ class base1_plugin0(base1):
+ pass
+ r(base1_plugin0)
+
+ class base1_plugin1(base1):
+ pass
+ r(base1_plugin1)
+
+ class base1_plugin2(base1):
+ pass
+ r(base1_plugin2)
+
+ registrants = tuple(r)
+
+ # Test API instance:
+ api = plugable.API(r)
+
+ def get_base(b):
+ return 'base%d' % b
+
+ def get_plugin(b, p):
+ return 'base%d_plugin%d' % (b, p)
+
+ for b in xrange(2):
+ base_name = get_base(b)
+ ns = getattr(api, base_name)
+ assert isinstance(ns, plugable.NameSpace)
+ assert read_only(api, base_name) is ns
+ assert len(ns) == 3
+ for p in xrange(3):
+ plugin_name = get_plugin(b, p)
+ proxy = ns[plugin_name]
+ assert isinstance(proxy, ExampleProxy)
+ assert proxy.name == plugin_name
+ assert read_only(ns, plugin_name) is proxy
+ assert read_only(proxy, 'method')(7) == 7 + b