[Checkins] SVN: zope.component/tseaver-test_cleanup/ Coverage for z.c.zcml.subscriber.

Tres Seaver cvs-admin at zope.org
Tue Jun 26 23:00:54 UTC 2012


Log message for revision 127112:
  Coverage for z.c.zcml.subscriber.

Changed:
  _U  zope.component/tseaver-test_cleanup/
  U   zope.component/tseaver-test_cleanup/src/zope/component/tests/test_zcml.py

-=-
Modified: zope.component/tseaver-test_cleanup/src/zope/component/tests/test_zcml.py
===================================================================
--- zope.component/tseaver-test_cleanup/src/zope/component/tests/test_zcml.py	2012-06-26 23:00:47 UTC (rev 127111)
+++ zope.component/tseaver-test_cleanup/src/zope/component/tests/test_zcml.py	2012-06-26 23:00:50 UTC (rev 127112)
@@ -77,21 +77,12 @@
     def _callFUT(self, *args, **kw):
         from zope.component.zcml import adapter
         return adapter(*args, **kw)
-
-    def _makeConfigContext(self):
-        class _Context(object):
-            info = 'TESTING'
-            def __init__(self):
-                self._actions = []
-            def action(self, *args, **kw):
-                self._actions.append((args, kw))
-        return _Context()
  
     def test_empty_factory(self):
         from zope.interface import Interface
         class IFoo(Interface):
             pass
-        _cfg_ctx = self._makeConfigContext()
+        _cfg_ctx = _makeConfigContext()
         self.assertRaises(ValueError,
                           self._callFUT, _cfg_ctx, [], [Interface], IFoo)
  
@@ -105,7 +96,7 @@
             pass
         class Bar(object):
             pass
-        _cfg_ctx = self._makeConfigContext()
+        _cfg_ctx = _makeConfigContext()
         self.assertRaises(ValueError,
                           self._callFUT, _cfg_ctx, [Foo, Bar],
                                          [Interface, IBar], IFoo)
@@ -115,7 +106,7 @@
         class _Factory(object):
             def __init__(self, context):
                 self.context = context
-        _cfg_ctx = self._makeConfigContext()
+        _cfg_ctx = _makeConfigContext()
         self.assertRaises(TypeError, self._callFUT, _cfg_ctx, [_Factory])
  
     def test_no_for__factory_adapts_no_provides_factory_not_implements(self):
@@ -125,7 +116,7 @@
         class _Factory(object):
             def __init__(self, context):
                 self.context = context
-        _cfg_ctx = self._makeConfigContext()
+        _cfg_ctx = _makeConfigContext()
         self.assertRaises(TypeError, self._callFUT, _cfg_ctx, [_Factory])
  
     def test_multiple_factory_single_for_(self):
@@ -138,7 +129,7 @@
             pass
         class Bar(object):
             pass
-        _cfg_ctx = self._makeConfigContext()
+        _cfg_ctx = _makeConfigContext()
         self._callFUT(_cfg_ctx, [Foo, Bar], IFoo, [Interface])
         self.assertEqual(len(_cfg_ctx._actions), 3)
         self.assertEqual(_cfg_ctx._actions[0][0], ())
@@ -174,7 +165,7 @@
             pass
         class Foo(object):
             pass
-        _cfg_ctx = self._makeConfigContext()
+        _cfg_ctx = _makeConfigContext()
         self._callFUT(_cfg_ctx, [Foo], IFoo, [Interface], permission='testing')
         self.assertEqual(len(_cfg_ctx._actions), 3)
         self.assertEqual(_cfg_ctx._actions[0][0], ())
@@ -203,7 +194,7 @@
             pass
         class Foo(object):
             pass
-        _cfg_ctx = self._makeConfigContext()
+        _cfg_ctx = _makeConfigContext()
         self._callFUT(_cfg_ctx, [Foo], IFoo, [Interface], locate=True)
         self.assertEqual(len(_cfg_ctx._actions), 3)
         self.assertEqual(_cfg_ctx._actions[0][0], ())
@@ -231,7 +222,7 @@
             pass
         class Foo(object):
             pass
-        _cfg_ctx = self._makeConfigContext()
+        _cfg_ctx = _makeConfigContext()
         self._callFUT(_cfg_ctx, [Foo], IFoo, [Interface], trusted=True)
         self.assertEqual(len(_cfg_ctx._actions), 3)
         self.assertEqual(_cfg_ctx._actions[0][0], ())
@@ -262,7 +253,7 @@
         class _Factory(object):
             def __init__(self, context):
                 self.context = context
-        _cfg_ctx = self._makeConfigContext()
+        _cfg_ctx = _makeConfigContext()
         self._callFUT(_cfg_ctx, [_Factory])
         self.assertEqual(len(_cfg_ctx._actions), 3)
         self.assertEqual(_cfg_ctx._actions[0][0], ())
@@ -276,6 +267,247 @@
                           '', 'TESTING'))
 
 
+class Test_subscriber(unittest.TestCase):
+
+    def _callFUT(self, *args, **kw):
+        from zope.component.zcml import subscriber
+        return subscriber(*args, **kw)
+
+    def test_no_factory_no_handler(self):
+        from zope.interface import Interface
+        _cfg_ctx = _makeConfigContext()
+        self.assertRaises(TypeError,
+                          self._callFUT, _cfg_ctx, (Interface,))
+
+    def test_no_factory_w_handler_w_provides(self):
+        from zope.interface import Interface
+        class IFoo(Interface):
+            pass
+        def _handler(*args):
+            pass
+        _cfg_ctx = _makeConfigContext()
+        self.assertRaises(TypeError,
+                          self._callFUT, _cfg_ctx, (Interface,),
+                                         handler=_handler, provides=IFoo)
+
+    def test_w_factory_w_handler(self):
+        from zope.interface import Interface
+        class Foo(object):
+            pass
+        def _handler(*args):
+            pass
+        _cfg_ctx = _makeConfigContext()
+        self.assertRaises(TypeError,
+                          self._callFUT, _cfg_ctx, (Interface,), Foo,
+                                         handler=_handler)
+
+    def test_w_factory_no_provides(self):
+        from zope.interface import Interface
+        class Foo(object):
+            pass
+        _cfg_ctx = _makeConfigContext()
+        self.assertRaises(TypeError,
+                          self._callFUT, _cfg_ctx, (Interface,), Foo)
+
+    def test_w_factory_w_provides_no_for_factory_wo_adapter(self):
+        from zope.interface import Interface
+        class IFoo(Interface):
+            pass
+        class Foo(object):
+            pass
+        _cfg_ctx = _makeConfigContext()
+        self.assertRaises(TypeError,
+                          self._callFUT, _cfg_ctx,
+                                         factory=Foo, provides=IFoo)
+
+    def test_no_factory_w_handler_no_provides(self):
+        from zope.interface import Interface
+        from zope.component.interface import provideInterface
+        from zope.component.zcml import handler
+        def _handler(*args):
+            pass
+        _cfg_ctx = _makeConfigContext()
+        self._callFUT(_cfg_ctx, (Interface,), handler=_handler)
+        self.assertEqual(len(_cfg_ctx._actions), 2)
+        self.assertEqual(_cfg_ctx._actions[0][0], ())
+        # Register the adapter
+        action =_cfg_ctx._actions[0][1]
+        self.assertEqual(action['callable'], handler)
+        self.assertEqual(action['discriminator'], None)
+        self.assertEqual(action['args'][0], 'registerHandler')
+        self.assertEqual(action['args'][1], _handler)
+        self.assertEqual(action['args'][2], (Interface,))
+        self.assertEqual(action['args'][3], '')
+        self.assertEqual(action['args'][4], 'TESTING')
+        # Register the required interface(s)
+        self.assertEqual(_cfg_ctx._actions[1][0], ())
+        action =_cfg_ctx._actions[1][1]
+        self.assertEqual(action['callable'], provideInterface)
+        self.assertEqual(action['discriminator'], None)
+        self.assertEqual(action['args'], ('', Interface))
+
+    def test_w_factory_w_provides(self):
+        from zope.interface import Interface
+        from zope.component.interface import provideInterface
+        from zope.component.zcml import handler
+        class IFoo(Interface):
+            pass
+        class Foo(object):
+            pass
+        def _handler(*args):
+            pass
+        _cfg_ctx = _makeConfigContext()
+        self._callFUT(_cfg_ctx, (Interface,), Foo, provides=IFoo)
+        self.assertEqual(len(_cfg_ctx._actions), 3)
+        self.assertEqual(_cfg_ctx._actions[0][0], ())
+        # Register the adapter
+        action =_cfg_ctx._actions[0][1]
+        self.assertEqual(action['callable'], handler)
+        self.assertEqual(action['discriminator'], None)
+        self.assertEqual(action['args'][0], 'registerSubscriptionAdapter')
+        self.assertEqual(action['args'][1], Foo)
+        self.assertEqual(action['args'][2], (Interface,))
+        self.assertEqual(action['args'][3], IFoo)
+        self.assertEqual(action['args'][4], '')
+        self.assertEqual(action['args'][5], 'TESTING')
+        # Register the provided interface
+        self.assertEqual(_cfg_ctx._actions[1][0], ())
+        action =_cfg_ctx._actions[1][1]
+        self.assertEqual(action['callable'], provideInterface)
+        self.assertEqual(action['discriminator'], None)
+        self.assertEqual(action['args'], ('', IFoo))
+        # Register the required interface(s)
+        self.assertEqual(_cfg_ctx._actions[2][0], ())
+        action =_cfg_ctx._actions[2][1]
+        self.assertEqual(action['callable'], provideInterface)
+        self.assertEqual(action['discriminator'], None)
+        self.assertEqual(action['args'], ('', Interface))
+
+    def test_w_factory_w_provides_w_permission(self):
+        from zope.interface import Interface
+        from zope.security.adapter import LocatingUntrustedAdapterFactory
+        from zope.component.interface import provideInterface
+        from zope.component.zcml import handler
+        class IFoo(Interface):
+            pass
+        class Foo(object):
+            pass
+        _cfg_ctx = _makeConfigContext()
+        self._callFUT(_cfg_ctx, (Interface,), Foo,
+                      provides=IFoo, permission='testing')
+        self.assertEqual(len(_cfg_ctx._actions), 3)
+        self.assertEqual(_cfg_ctx._actions[0][0], ())
+        # Register the adapter
+        action =_cfg_ctx._actions[0][1]
+        self.assertEqual(action['callable'], handler)
+        self.assertEqual(action['discriminator'], None)
+        self.assertEqual(action['args'][0], 'registerSubscriptionAdapter')
+        factory_proxy = action['args'][1]
+        # Foo wraped by 'protected_factory' plus
+        # 'LocatingUntrustedAdapterFactory'
+        self.assertTrue(isinstance(factory_proxy,
+                        LocatingUntrustedAdapterFactory))
+        self.assertTrue(factory_proxy.factory.factory is Foo)
+        self.assertEqual(action['args'][2], (Interface,))
+        self.assertEqual(action['args'][3], IFoo)
+        self.assertEqual(action['args'][4], '')
+        self.assertEqual(action['args'][5], 'TESTING')
+        # Register the provided interface
+        self.assertEqual(_cfg_ctx._actions[1][0], ())
+        action =_cfg_ctx._actions[1][1]
+        self.assertEqual(action['callable'], provideInterface)
+        self.assertEqual(action['discriminator'], None)
+        self.assertEqual(action['args'], ('', IFoo))
+        # Register the required interface(s)
+        self.assertEqual(_cfg_ctx._actions[2][0], ())
+        action =_cfg_ctx._actions[2][1]
+        self.assertEqual(action['callable'], provideInterface)
+        self.assertEqual(action['discriminator'], None)
+        self.assertEqual(action['args'], ('', Interface))
+
+    def test_w_factory_w_provides_wo_permission_w_locate(self):
+        from zope.interface import Interface
+        from zope.security.adapter import LocatingUntrustedAdapterFactory
+        from zope.component.interface import provideInterface
+        from zope.component.zcml import handler
+        class IFoo(Interface):
+            pass
+        class Foo(object):
+            pass
+        _cfg_ctx = _makeConfigContext()
+        self._callFUT(_cfg_ctx, (Interface,), Foo, provides=IFoo, locate=True)
+        self.assertEqual(len(_cfg_ctx._actions), 3)
+        self.assertEqual(_cfg_ctx._actions[0][0], ())
+        # Register the adapter
+        action =_cfg_ctx._actions[0][1]
+        self.assertEqual(action['callable'], handler)
+        self.assertEqual(action['discriminator'], None)
+        self.assertEqual(action['args'][0], 'registerSubscriptionAdapter')
+        factory_proxy = action['args'][1]
+        # Foo wraped by 'protected_factory' plus
+        # 'LocatingUntrustedAdapterFactory'
+        self.assertTrue(isinstance(factory_proxy,
+                        LocatingUntrustedAdapterFactory))
+        self.assertTrue(factory_proxy.factory is Foo)
+        self.assertEqual(action['args'][2], (Interface,))
+        self.assertEqual(action['args'][3], IFoo)
+        self.assertEqual(action['args'][4], '')
+        self.assertEqual(action['args'][5], 'TESTING')
+        # Register the provided interface
+        self.assertEqual(_cfg_ctx._actions[1][0], ())
+        action =_cfg_ctx._actions[1][1]
+        self.assertEqual(action['callable'], provideInterface)
+        self.assertEqual(action['discriminator'], None)
+        self.assertEqual(action['args'], ('', IFoo))
+        # Register the required interface(s)
+        self.assertEqual(_cfg_ctx._actions[2][0], ())
+        action =_cfg_ctx._actions[2][1]
+        self.assertEqual(action['callable'], provideInterface)
+        self.assertEqual(action['discriminator'], None)
+        self.assertEqual(action['args'], ('', Interface))
+
+    def test_w_factory_w_provides_wo_permission_w_trusted(self):
+        from zope.interface import Interface
+        from zope.security.adapter import TrustedAdapterFactory
+        from zope.component.interface import provideInterface
+        from zope.component.zcml import handler
+        class IFoo(Interface):
+            pass
+        class Foo(object):
+            pass
+        _cfg_ctx = _makeConfigContext()
+        self._callFUT(_cfg_ctx, (Interface,), Foo, provides=IFoo, trusted=True)
+        self.assertEqual(len(_cfg_ctx._actions), 3)
+        self.assertEqual(_cfg_ctx._actions[0][0], ())
+        # Register the adapter
+        action =_cfg_ctx._actions[0][1]
+        self.assertEqual(action['callable'], handler)
+        self.assertEqual(action['discriminator'], None)
+        self.assertEqual(action['args'][0], 'registerSubscriptionAdapter')
+        factory_proxy = action['args'][1]
+        # Foo wraped by 'protected_factory' plus
+        # 'TrustedAdapterFactory'
+        self.assertTrue(isinstance(factory_proxy,
+                        TrustedAdapterFactory))
+        self.assertTrue(factory_proxy.factory is Foo)
+        self.assertEqual(action['args'][2], (Interface,))
+        self.assertEqual(action['args'][3], IFoo)
+        self.assertEqual(action['args'][4], '')
+        self.assertEqual(action['args'][5], 'TESTING')
+        # Register the provided interface
+        self.assertEqual(_cfg_ctx._actions[1][0], ())
+        action =_cfg_ctx._actions[1][1]
+        self.assertEqual(action['callable'], provideInterface)
+        self.assertEqual(action['discriminator'], None)
+        self.assertEqual(action['args'], ('', IFoo))
+        # Register the required interface(s)
+        self.assertEqual(_cfg_ctx._actions[2][0], ())
+        action =_cfg_ctx._actions[2][1]
+        self.assertEqual(action['callable'], provideInterface)
+        self.assertEqual(action['discriminator'], None)
+        self.assertEqual(action['args'], ('', Interface))
+
+
 class ResourceViewTests(PlacelessSetup, unittest.TestCase):
 
     def setUp(self):
@@ -721,10 +953,20 @@
    </configure>"""
 
 
+def _makeConfigContext():
+    class _Context(object):
+        info = 'TESTING'
+        def __init__(self):
+            self._actions = []
+        def action(self, *args, **kw):
+            self._actions.append((args, kw))
+    return _Context()
+
 def test_suite():
     return unittest.TestSuite((
         unittest.makeSuite(Test_handler),
         unittest.makeSuite(Test__rolledUpFactory),
         unittest.makeSuite(Test_adapter),
+        unittest.makeSuite(Test_subscriber),
         unittest.makeSuite(ResourceViewTests),
     ))



More information about the checkins mailing list