[Zope-Checkins] CVS: Zope/lib/python/AccessControl/tests - testClassSecurityInfo.py:1.2

Brian Lloyd brian@zope.com
Fri, 12 Apr 2002 11:22:43 -0400


Update of /cvs-repository/Zope/lib/python/AccessControl/tests
In directory cvs.zope.org:/tmp/cvs-serv6269

Added Files:
	testClassSecurityInfo.py 
Log Message:
Added unit test


=== Zope/lib/python/AccessControl/tests/testClassSecurityInfo.py 1.1 => 1.2 ===
+#
+# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
+# 
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.0 (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
+# 
+##############################################################################
+""" """
+
+import os, sys, unittest, ZODB, Globals
+from AccessControl.SecurityInfo import ClassSecurityInfo
+from OFS.Folder import Folder
+
+
+class ClassSecurityInfoTests(unittest.TestCase):
+
+
+    def testSetPermissionDefault(self):
+        """Test setting default roles for permissions."""
+
+        # Setup a test class with default role -> permission decls.
+        class Test(Folder):
+            """Test class"""
+            __ac_roles__ = ('Role A', 'Role B', 'Role C')
+
+            meta_type = "Test"
+
+            security = ClassSecurityInfo()
+
+            security.setPermissionDefault(
+                'Test permission',
+                ('Manager', 'Role A', 'Role B', 'Role C')
+                )
+
+            security.declareProtected('Test permission', 'foo')
+            def foo(self, REQUEST=None):
+                """ """
+                pass
+
+        # Do class initialization.
+        Globals.InitializeClass(Test)
+
+        # Now check the resulting class to see if the mapping was made
+        # correctly. Note that this uses carnal knowledge of the internal
+        # structures used to store this information!
+        object = Test()
+        imPermissionRole = object.foo__roles__
+        self.failUnless(len(imPermissionRole) == 4)
+        for item in ('Manager', 'Role A', 'Role B', 'Role C'):
+            self.failUnless(item in imPermissionRole)
+
+
+def test_suite():
+    suite = unittest.TestSuite()
+    suite.addTest(unittest.makeSuite(ClassSecurityInfoTests))
+    return suite
+
+def main():
+    unittest.TextTestRunner().run(test_suite())
+
+if __name__ == '__main__':
+    main()