[Checkins] SVN: zope.component/tseaver-test_cleanup/ Coverage.

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


Log message for revision 127088:
  Coverage.

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

-=-
Modified: zope.component/tseaver-test_cleanup/src/zope/component/tests/test_security.py
===================================================================
--- zope.component/tseaver-test_cleanup/src/zope/component/tests/test_security.py	2012-06-26 00:27:05 UTC (rev 127087)
+++ zope.component/tseaver-test_cleanup/src/zope/component/tests/test_security.py	2012-06-26 00:27:09 UTC (rev 127088)
@@ -41,6 +41,137 @@
         self.assertEqual(providedBy(proxy), providedBy(foo))
 
 
+class Test__checker(unittest.TestCase):
+
+    def _callFUT(self, *args, **kw):
+        from zope.component.security import _checker
+        return _checker(*args, **kw)
+
+    def test_no_allowed_attributes_no_allowed_interfaces(self):
+        from zope.security.checker import CheckerPublic
+        checker = self._callFUT(object(), 'zope.Public', (), ())
+        self.assertEqual(checker.get_permissions, {'__call__': CheckerPublic})
+        self.assertFalse(checker.set_permissions)
+
+    def test_w_allowed_interfaces(self):
+        from zope.interface import Interface
+        class IFoo(Interface):
+            def bar(self):
+                pass
+            def baz(self):
+                pass
+        class ISpam(Interface):
+            def qux(self):
+                pass
+        checker = self._callFUT(object(), 'testing', (IFoo, ISpam), ())
+        self.assertEqual(checker.get_permissions,
+                        {'bar': 'testing', 'baz': 'testing', 'qux': 'testing'})
+        self.assertFalse(checker.set_permissions)
+
+    def test_w_allowed_attributes(self):
+        checker = self._callFUT(object(), 'testing', (), ('foo', 'bar'))
+        self.assertEqual(checker.get_permissions,
+                        {'foo': 'testing', 'bar': 'testing'})
+        self.assertFalse(checker.set_permissions)
+
+
+class Test_proxify(unittest.TestCase):
+
+    def _callFUT(self, *args, **kw):
+        from zope.component.security import proxify
+        return proxify(*args, **kw)
+
+    def _makeContext(self):
+        class _Context(object):
+            def bar(self):
+                pass
+        return _Context()
+
+    def test_no_checker_no_provides(self):
+        ctx = self._makeContext()
+        self.assertRaises(ValueError, self._callFUT, ctx, permission='testing')
+
+    def test_no_checker_no_permission(self):
+        from zope.interface import Interface
+        class IFoo(Interface):
+            def bar(self):
+                pass
+        ctx = self._makeContext()
+        self.assertRaises(ValueError, self._callFUT, ctx, provides=IFoo)
+
+    def test_no_checker_w_provides_and_permission_public(self):
+        from zope.interface import Interface
+        from zope.security.checker import CheckerPublic
+        from zope.proxy import getProxiedObject
+        class IFoo(Interface):
+            def bar(self):
+                pass
+        ctx = self._makeContext()
+        proxy = self._callFUT(ctx, provides=IFoo, permission='zope.Public')
+        self.assertTrue(getProxiedObject(proxy) is ctx)
+        checker = proxy.__Security_checker__
+        self.assertEqual(checker.get_permissions, {'bar': CheckerPublic})
+        self.assertFalse(checker.set_permissions)
+
+    def test_no_checker_w_provides_and_permission_protected(self):
+        from zope.interface import Interface
+        from zope.proxy import getProxiedObject
+        class IFoo(Interface):
+            def bar(self):
+                pass
+        ctx = self._makeContext()
+        proxy = self._callFUT(ctx, provides=IFoo, permission='testing')
+        self.assertTrue(getProxiedObject(proxy) is ctx)
+        checker = proxy.__Security_checker__
+        self.assertEqual(checker.get_permissions, {'bar': 'testing'})
+        self.assertFalse(checker.set_permissions)
+
+    def test_w_checker(self):
+        from zope.proxy import getProxiedObject
+        _CHECKER = object()
+        ctx = self._makeContext()
+        proxy = self._callFUT(ctx, _CHECKER)
+        self.assertTrue(getProxiedObject(proxy) is ctx)
+        self.assertTrue(proxy.__Security_checker__ is _CHECKER)
+
+
+class Test_protectedFactory(unittest.TestCase):
+
+    def _callFUT(self, *args, **kw):
+        from zope.component.security import protectedFactory
+        return protectedFactory(*args, **kw)
+
+    def test_public_not_already_proxied(self):
+        from zope.interface import Interface
+        from zope.security.checker import CheckerPublic
+        class IFoo(Interface):
+            def bar(self):
+                pass
+        class _Factory(object):
+            def bar(self):
+                pass
+        protected = self._callFUT(_Factory, IFoo, 'zope.Public')
+        self.assertTrue(protected.factory is _Factory)
+        foo = protected()
+        self.assertEqual(foo.__Security_checker__.get_permissions,
+                        {'bar': CheckerPublic})
+
+    def test_nonpublic_already_proxied(self):
+        from zope.interface import Interface
+        from zope.security.proxy import getTestProxyItems
+        class IFoo(Interface):
+            def bar(self):
+                pass
+        class _Factory(object):
+            __slots__ = ('one',)
+            def bar(self):
+                pass
+        protected = self._callFUT(_Factory, IFoo, 'testing')
+        self.assertTrue(protected.factory is _Factory)
+        foo = protected()
+        self.assertEqual(getTestProxyItems(foo), [('bar', 'testing')])
+
+
 class ResourceViewTests(PlacelessSetup, unittest.TestCase):
 
     def setUp(self):
@@ -489,5 +620,8 @@
 def test_suite():
     return unittest.TestSuite((
         unittest.makeSuite(PermissionProxyTests),
+        unittest.makeSuite(Test__checker),
+        unittest.makeSuite(Test_proxify),
+        unittest.makeSuite(Test_protectedFactory),
         unittest.makeSuite(ResourceViewTests),
     ))



More information about the checkins mailing list