[Zope3-checkins] CVS: Zope3/lib/python/Zope/App/ContentDirective/tests - testRequirePermissions.py:1.5

Jim Fulton jim@zope.com
Tue, 1 Oct 2002 08:48:20 -0400


Update of /cvs-repository/Zope3/lib/python/Zope/App/ContentDirective/tests
In directory cvs.zope.org:/tmp/cvs-serv18244/lib/python/Zope/App/ContentDirective/tests

Modified Files:
	testRequirePermissions.py 
Log Message:
Added the ability to provide permissions for setting selected
attributes.



=== Zope3/lib/python/Zope/App/ContentDirective/tests/testRequirePermissions.py 1.4 => 1.5 ===
--- Zope3/lib/python/Zope/App/ContentDirective/tests/testRequirePermissions.py:1.4	Thu Jun 20 11:54:46 2002
+++ Zope3/lib/python/Zope/App/ContentDirective/tests/testRequirePermissions.py	Tue Oct  1 08:47:49 2002
@@ -79,10 +79,25 @@
         self.assertEqual(checker.permission_id('m2'), (m2P or None))
         self.assertEqual(checker.permission_id('m3'), (m3P or None))
 
+    def assertSetattrState(self, m1P=NOTSET, m2P=NOTSET, m3P=NOTSET):
+        "Verify that class, instance, and methods have expected permissions."
+
+        from Zope.Security.Checker import selectChecker
+        from Zope.Exceptions import Forbidden
+
+        checker = selectChecker(TestModule.test_instance)
+        self.assertEqual(checker.setattr_permission_id('m1'), (m1P or None))
+        self.assertEqual(checker.setattr_permission_id('m2'), (m2P or None))
+        self.assertEqual(checker.setattr_permission_id('m3'), (m3P or None))
+
     def assertDeclaration(self, declaration, **state):
         apply_declaration(template_bracket % declaration)
         self.assertState(**state)
 
+    def assertSetattrDeclaration(self, declaration, **state):
+        apply_declaration(template_bracket % declaration)
+        self.assertSetattrState(**state)
+
     # "testSimple*" exercises tags that do NOT have children.  This mode
     # inherently sets the instances as well as the class attributes.
 
@@ -94,6 +109,15 @@
                           </content>"""
                        % (PREFIX+"test_class", P1))
         self.assertDeclaration(declaration, m1P=P1, m3P=P1)
+
+    def test_set_attributes(self):
+        declaration = ("""<content class="%s">
+                            <require
+                                permission="%s" 
+                                set_attributes="m1 m3"/>
+                          </content>"""
+                       % (PREFIX+"test_class", P1))
+        self.assertSetattrDeclaration(declaration, m1P=P1, m3P=P1)
 
     def testSimpleInterface(self):
         declaration = ("""<content class="%s">