diff options
author | Jason Gerard DeRose <jderose@redhat.com> | 2008-08-05 03:21:52 +0000 |
---|---|---|
committer | Jason Gerard DeRose <jderose@redhat.com> | 2008-08-05 03:21:52 +0000 |
commit | c3bf5ad8579e6f09aba558a68de947b2be398619 (patch) | |
tree | fe2ea34541ff5a20d6ca3ef9bba82ea083157d2c /ipalib/tests/test_plugable.py | |
parent | 74f5719078adfcfdf8b98bf97f0828dd150c840d (diff) | |
download | freeipa.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.py | 67 |
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 |