diff options
| author | Tres Seaver <tseaver@palladion.com> | 2013-02-11 14:22:41 -0500 |
|---|---|---|
| committer | Tres Seaver <tseaver@palladion.com> | 2013-02-11 14:22:41 -0500 |
| commit | 84bdf67065a348fff935b2ee3cee6204472d9068 (patch) | |
| tree | aafe6e980c5335b460279a1054695053ff8fc1b7 | |
| parent | b8cbc1059dc761d6c32a1df5509f91424ff3f25a (diff) | |
| download | zope-security-84bdf67065a348fff935b2ee3cee6204472d9068.tar.gz | |
Coverage for z.s.checker.selectChecker (C and Python versions).
| -rw-r--r-- | src/zope/security/checker.py | 3 | ||||
| -rw-r--r-- | src/zope/security/tests/test_checker.py | 100 |
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), |
