############################################################################## # # Copyright (c) 2003 Zope Corporation and Contributors. # All Rights Reserved. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # ############################################################################## """Test of the implementation selection support.""" import unittest from AccessControl.Implementation import getImplementationName from AccessControl.Implementation import setImplementation class AccessControlImplementationTest(unittest.TestCase): have_cAccessControl = None def setUp(self): if self.have_cAccessControl is None: try: import AccessControl.cAccessControl except ImportError: v = False else: v = True self.__class__.have_cAccessControl = v self.original = getImplementationName() def tearDown(self): setImplementation(self.original) ## Note - this test is disabled because the intent for 2.7 was *not* ## to support the ability to arbitrarily switch the security policy ## at any time (which would currently be nearly impossible to do in ## a way that would be sane for 3rd party apps that may already have ## imported parts of the security machinery), but just to make sure ## that the config file could be used to initially set the implementation ## to be used. The policy setting is 'initialize once' - setImplementation ## should not be called either by user code or unit tests, as the ## effects are officially undefined. ## def test_setImplemenationC(self): ## setImplementation("C") ## name = getImplementationName() ## if self.have_cAccessControl: ## self.assertEqual(name, "C") ## else: ## self.assertEqual(name, "PYTHON") ## def test_setImplemenationPython(self): ## setImplementation("Python") ## self.assertEqual(getImplementationName(), "PYTHON") def test_suite(): return unittest.makeSuite(AccessControlImplementationTest) if __name__ == "__main__": unittest.main(defaultTest="test_suite")