summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTres Seaver <tseaver@palladion.com>2013-02-11 14:22:41 -0500
committerTres Seaver <tseaver@palladion.com>2013-02-11 14:22:41 -0500
commit84bdf67065a348fff935b2ee3cee6204472d9068 (patch)
treeaafe6e980c5335b460279a1054695053ff8fc1b7
parentb8cbc1059dc761d6c32a1df5509f91424ff3f25a (diff)
downloadzope-security-84bdf67065a348fff935b2ee3cee6204472d9068.tar.gz
Coverage for z.s.checker.selectChecker (C and Python versions).
-rw-r--r--src/zope/security/checker.py3
-rw-r--r--src/zope/security/tests/test_checker.py100
2 files changed, 102 insertions, 1 deletions
diff --git a/src/zope/security/checker.py b/src/zope/security/checker.py
index 9c7f102..70753e6 100644
--- a/src/zope/security/checker.py
+++ b/src/zope/security/checker.py
@@ -357,7 +357,7 @@ def MultiChecker(specs):
return Checker(data)
-def selectChecker(object):
+def selectCheckerPy(object):
"""Get a checker for the given object
The appropriate checker is returned or None is returned. If the
@@ -388,6 +388,7 @@ def selectChecker(object):
return None
return checker
+selectChecker = selectCheckerPy # in case no C optimizations
def getCheckerForInstancesOf(class_):
return _checkers.get(class_)
diff --git a/src/zope/security/tests/test_checker.py b/src/zope/security/tests/test_checker.py
index e6ef5a6..3e8ecd3 100644
--- a/src/zope/security/tests/test_checker.py
+++ b/src/zope/security/tests/test_checker.py
@@ -668,6 +668,104 @@ class Test_MultiChecker(unittest.TestCase):
+class _SelectCheckerBase(object):
+
+ def setUp(self):
+ from zope.security.checker import _clear
+ _clear()
+
+ def tearDown(self):
+ from zope.security.checker import _clear
+ _clear()
+
+ def test_w_basic_types_NoProxy(self):
+ import datetime
+ from zope.i18nmessageid import Message
+ msg = Message('msg')
+ for obj in [object(),
+ 42,
+ 3.14,
+ None,
+ u'text',
+ b'binary',
+ msg,
+ True,
+ datetime.timedelta(1),
+ datetime.datetime.now(),
+ datetime.date.today(),
+ datetime.datetime.now().time(),
+ datetime.tzinfo('UTC'),
+ ]:
+ self.assertTrue(self._callFUT(obj) is None)
+
+ def test_w_checker_inst(self):
+ from zope.security.checker import Checker
+ from zope.security.checker import _checkers
+ class Foo(object):
+ pass
+ checker = _checkers[Foo] = Checker({})
+ self.assertTrue(self._callFUT(Foo()) is checker)
+
+ def test_w_factory_returning_checker(self):
+ from zope.security.checker import Checker
+ from zope.security.checker import _checkers
+ class Foo(object):
+ pass
+ checker = Checker({})
+ def _factory(obj):
+ return checker
+ _checkers[Foo] = _factory
+ self.assertTrue(self._callFUT(Foo()) is checker)
+
+ def test_w_factory_returning_NoProxy(self):
+ from zope.security.checker import NoProxy
+ from zope.security.checker import _checkers
+ class Foo(object):
+ pass
+ def _factory(obj):
+ return NoProxy
+ _checkers[Foo] = _factory
+ self.assertTrue(self._callFUT(Foo()) is None)
+
+ def test_w_factory_returning_None(self):
+ from zope.security.checker import _checkers
+ class Foo(object):
+ pass
+ def _factory(obj):
+ pass
+ _checkers[Foo] = _factory
+ self.assertTrue(self._callFUT(Foo()) is None)
+
+ def test_w_factory_factory(self):
+ from zope.security.checker import Checker
+ from zope.security.checker import _checkers
+ class Foo(object):
+ pass
+ checker = Checker({})
+ def _factory(obj):
+ return checker
+ def _factory_factory(obj):
+ return _factory
+ _checkers[Foo] = _factory_factory
+ self.assertTrue(self._callFUT(Foo()) is checker)
+
+
+
+class Test_selectCheckerPy(unittest.TestCase, _SelectCheckerBase):
+
+ def _callFUT(self, obj):
+ from zope.security.checker import selectCheckerPy
+ return selectCheckerPy(obj)
+
+
+
+class Test_selectChecker(unittest.TestCase, _SelectCheckerBase):
+
+ def _callFUT(self, obj):
+ from zope.security.checker import selectChecker
+ return selectChecker(obj)
+
+
# Pre-geddon tests start here
class Test(unittest.TestCase):
@@ -1339,6 +1437,8 @@ def test_suite():
unittest.makeSuite(Test_NamesChecker),
unittest.makeSuite(Test_InterfaceChecker),
unittest.makeSuite(Test_MultiChecker),
+ unittest.makeSuite(Test_selectCheckerPy),
+ unittest.makeSuite(Test_selectChecker),
# pre-geddon fossils
unittest.makeSuite(Test),
unittest.makeSuite(TestCheckerPublic),