[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">