[Checkins] SVN: zope.security/trunk/ Coverage for z.s.adapter.LocationTrustedAdapterFactory.

Tres Seaver cvs-admin at zope.org
Mon Dec 24 15:58:44 UTC 2012


Log message for revision 128892:
  Coverage for z.s.adapter.LocationTrustedAdapterFactory.

Changed:
  _U  zope.security/trunk/
  U   zope.security/trunk/src/zope/security/tests/test_adapter.py

-=-
Modified: zope.security/trunk/src/zope/security/tests/test_adapter.py
===================================================================
--- zope.security/trunk/src/zope/security/tests/test_adapter.py	2012-12-24 15:58:42 UTC (rev 128891)
+++ zope.security/trunk/src/zope/security/tests/test_adapter.py	2012-12-24 15:58:43 UTC (rev 128892)
@@ -37,9 +37,9 @@
     def test_w_non_ILocation(self):
         from zope.location import LocationProxy
         from zope.proxy import getProxiedObject
-        class _Adapter(object):
+        class _NotAdapter(object):
             pass
-        adapter = _Adapter()
+        adapter = _NotAdapter()
         parent = object()
         returned = self._callFUT(adapter, parent)
         self.assertTrue(isinstance(returned, LocationProxy))
@@ -74,7 +74,191 @@
         self.assertTrue(returned.__parent__ is parent)
 
 
+class LocatingTrustedAdapterFactoryTests(unittest.TestCase):
+
+    def _getTargetClass(self):
+        from zope.security.adapter import LocatingTrustedAdapterFactory
+        return LocatingTrustedAdapterFactory
+
+    def _makeOne(self, factory):
+        return self._getTargetClass()(factory)
+
+    def _makeFactory(self):
+        class _Factory(object):
+            __name__ = 'testing'
+            __module__ = 'zope.security.tests.test_adapter'
+            def __call__(self, *args):
+                self._called_with = args
+                return self
+        return _Factory()
+
+    def test_ctor(self):
+        factory = self._makeFactory()
+        ltaf = self._makeOne(factory)
+        self.assertTrue(ltaf.factory is factory)
+        self.assertEqual(ltaf.__name__, 'testing')
+        self.assertEqual(ltaf.__module__, 'zope.security.tests.test_adapter')
+
+    def test__call__w_non_ILocation_non_spacesuit(self):
+        factory = self._makeFactory()
+        ltaf = self._makeOne(factory)
+        class _NotAdapter(object):
+            pass
+        adapter = _NotAdapter()
+        before = factory.__dict__.copy()
+        returned = ltaf(adapter)
+        self.assertTrue(returned is factory)
+        after = dict([(k, v) for k, v in returned.__dict__.items()
+                         if k != '_called_with'])
+        self.assertEqual(factory._called_with, (adapter,))
+        self.assertEqual(after, before) # no added attrs
+
+    def test__call__w_non_ILocation_non_spacesuit_multiple_args(self):
+        factory = self._makeFactory()
+        ltaf = self._makeOne(factory)
+        class _NotAdapter(object):
+            pass
+        adapter = _NotAdapter()
+        extra = object()
+        before = factory.__dict__.copy()
+        returned = ltaf(adapter, extra)
+        self.assertTrue(returned is factory)
+        after = dict([(k, v) for k, v in returned.__dict__.items()
+                         if k != '_called_with'])
+        self.assertEqual(factory._called_with, (adapter, extra))
+        self.assertEqual(after, before) # no added attrs
+
+    def test__call__w_ILocation_w_existing_parent_non_spacesuit(self):
+        from zope.interface import directlyProvides
+        from zope.location import ILocation
+        factory = self._makeFactory()
+        parent = factory.__parent__ = object()
+        directlyProvides(factory, ILocation)
+        ltaf = self._makeOne(factory)
+        class _NotAdapter(object):
+            pass
+        adapter = _NotAdapter()
+        before = factory.__dict__.copy()
+        returned = ltaf(adapter)
+        self.assertTrue(returned is factory)
+        self.assertTrue(returned.__parent__ is parent)
+
+    def test__call__w_ILocation_wo_existing_parent_non_spacesuit(self):
+        from zope.interface import directlyProvides
+        from zope.location import ILocation
+        factory = self._makeFactory()
+        factory.__parent__ = None
+        directlyProvides(factory, ILocation)
+        ltaf = self._makeOne(factory)
+        class _NotAdapter(object):
+            pass
+        adapter = _NotAdapter()
+        before = factory.__dict__.copy()
+        returned = ltaf(adapter)
+        self.assertTrue(returned is factory)
+        self.assertTrue(returned.__parent__ is adapter)
+
+    def test__call__w_non_ILocation_w_spacesuit(self):
+        from zope.proxy import getProxiedObject
+        from zope.security.proxy import ProxyFactory
+        from zope.security.proxy import removeSecurityProxy
+        factory = self._makeFactory()
+        ltaf = self._makeOne(factory)
+        class _NotAdapter(object):
+            pass
+        adapter = _NotAdapter()
+        proxy = ProxyFactory(adapter)
+        before = factory.__dict__.copy()
+        returned = ltaf(proxy)
+        self.assertFalse(returned is factory)
+        ploc = removeSecurityProxy(returned)
+        self.assertTrue(ploc.__parent__ is adapter)
+        unwrapped = getProxiedObject(ploc)
+        self.assertTrue(unwrapped is factory)
+        after = dict([(k, v) for k, v in unwrapped.__dict__.items()
+                         if k not in ('_called_with',)])
+        self.assertEqual(factory._called_with, (adapter,))
+        self.assertEqual(after, before) # no added attrs
+
+    def test__call__w_non_ILocation_w_spacesuit_multiple_args(self):
+        from zope.proxy import getProxiedObject
+        from zope.security.proxy import ProxyFactory
+        from zope.security.proxy import removeSecurityProxy
+        factory = self._makeFactory()
+        ltaf = self._makeOne(factory)
+        class _NotAdapter(object):
+            pass
+        adapter = _NotAdapter()
+        extra = object()
+        proxy = ProxyFactory(adapter)
+        before = factory.__dict__.copy()
+        returned = ltaf(proxy, extra)
+        self.assertFalse(returned is factory)
+        ploc = removeSecurityProxy(returned)
+        self.assertTrue(ploc.__parent__ is adapter)
+        unwrapped = getProxiedObject(ploc)
+        self.assertTrue(unwrapped is factory)
+        after = dict([(k, v) for k, v in unwrapped.__dict__.items()
+                         if k not in ('_called_with',)])
+        self.assertEqual(factory._called_with, (adapter, extra))
+        self.assertEqual(after, before) # no added attrs
+
+    def test__call__w_non_ILocation_multiple_args_extra_spacesuit(self):
+        from zope.proxy import getProxiedObject
+        from zope.security.proxy import ProxyFactory
+        from zope.security.proxy import removeSecurityProxy
+        factory = self._makeFactory()
+        ltaf = self._makeOne(factory)
+        class _NotAdapter(object):
+            pass
+        class _Extra(object):
+            pass
+        adapter = _NotAdapter()
+        extra = _Extra()
+        proxy = ProxyFactory(extra)
+        before = factory.__dict__.copy()
+        returned = ltaf(adapter, proxy)
+        self.assertFalse(returned is factory)
+        ploc = removeSecurityProxy(returned)
+        self.assertTrue(ploc.__parent__ is adapter)
+        unwrapped = getProxiedObject(ploc)
+        self.assertTrue(unwrapped is factory)
+        after = dict([(k, v) for k, v in unwrapped.__dict__.items()
+                         if k not in ('_called_with',)])
+        self.assertEqual(factory._called_with, (adapter, extra))
+        self.assertEqual(after, before) # no added attrs
+
+    def test__call__w_ILocation_w_spacesuit(self):
+        from zope.interface import directlyProvides
+        from zope.location import ILocation
+        from zope.proxy import getProxiedObject
+        from zope.security.proxy import ProxyFactory
+        from zope.security.proxy import removeSecurityProxy
+        factory = self._makeFactory()
+        factory.__parent__ = factory.__name__ = None
+        directlyProvides(factory, ILocation)
+        ltaf = self._makeOne(factory)
+        class _Adapter(object):
+            pass
+        adapter = _Adapter()
+        proxy = ProxyFactory(adapter)
+        before = dict([(k, v) for k, v in factory.__dict__.items()
+                         if k not in ('_called_with', '__parent__')])
+        returned = ltaf(proxy)
+        self.assertFalse(returned is factory)
+        ploc = removeSecurityProxy(returned)
+        self.assertTrue(ploc.__parent__ is adapter)
+        unwrapped = getProxiedObject(ploc)
+        self.assertTrue(unwrapped is factory)
+        after = dict([(k, v) for k, v in unwrapped.__dict__.items()
+                         if k not in ('_called_with', '__parent__')])
+        self.assertEqual(factory._called_with, (adapter,))
+        self.assertTrue(factory.__parent__ is adapter)
+        self.assertEqual(after, before) # no added attrs
+
+
 def test_suite():
     return unittest.TestSuite((
         unittest.makeSuite(Test_assertLocation),
+        unittest.makeSuite(LocatingTrustedAdapterFactoryTests),
     ))



More information about the checkins mailing list