Log message for revision 113164: Get rid of a ZopeTestCase dependency Changed: U Zope/trunk/AC-vs-DTML-TODO.txt U Zope/trunk/src/AccessControl/tests/testZCML.py
-=- Modified: Zope/trunk/AC-vs-DTML-TODO.txt =================================================================== --- Zope/trunk/AC-vs-DTML-TODO.txt 2010-06-05 17:41:58 UTC (rev 113163) +++ Zope/trunk/AC-vs-DTML-TODO.txt 2010-06-05 18:43:44 UTC (rev 113164) @@ -34,10 +34,6 @@ the App package, which could serve as a general dumping ground for ZMI related stuff from "reusable" packages. -- Test only dependencies: - - * Testing - DocumentTemplate ---------------- Modified: Zope/trunk/src/AccessControl/tests/testZCML.py =================================================================== --- Zope/trunk/src/AccessControl/tests/testZCML.py 2010-06-05 17:41:58 UTC (rev 113163) +++ Zope/trunk/src/AccessControl/tests/testZCML.py 2010-06-05 18:43:44 UTC (rev 113164) @@ -62,6 +62,9 @@ class Dummy4: foo = None +class Dummy5: + pass + def test_security_equivalence(): """This test demonstrates that the traditional declarative security of Zope 2 can be replaced by ZCML statements without any loss of @@ -220,6 +223,9 @@ >>> from zope.component.testing import setUp, tearDown >>> setUp() + >>> from zope.component import eventtesting + >>> eventtesting.setUp() + zope.security has a function zope.security.checkPermission which provides an easy way of checking whether the currently authenticated user has the permission to access an object. The function delegates to @@ -235,33 +241,34 @@ >>> XMLConfig('meta.zcml', AccessControl)() >>> XMLConfig('permissions.zcml', AccessControl)() + >>> from AccessControl.tests.testZCML import Dummy5 + >>> dummy = Dummy5() + In the following we want to test AccessControl's checkPermission function. - We do that by taking the test's folder and asserting several - standard permissions. What we want to assure is that - checkPermission translates the Zope 2 permissions correctly, - especially the edge cases: + What we want to assure is that checkPermission translates the Zope 2 + permissions correctly, especially the edge cases: a) zope2.Public (which should always be available to everyone) >>> from AccessControl.security import checkPermission - >>> checkPermission('zope2.Public', self.folder) + >>> checkPermission('zope2.Public', dummy) True b) zope2.Private (which should never available to anyone) - >>> checkPermission('zope.Private', self.folder) + >>> checkPermission('zope.Private', dummy) False - >>> checkPermission('zope2.Private', self.folder) + >>> checkPermission('zope2.Private', dummy) False Any other standard Zope 2 permission will also resolve correctly: - >>> checkPermission('zope2.AccessContentsInformation', self.folder) - True + >>> checkPermission('zope2.ViewManagementScreens', dummy) + False Invalid permissions will obviously result in a negative response: - >>> checkPermission('notapermission', self.folder) + >>> checkPermission('notapermission', dummy) False @@ -281,24 +288,24 @@ a) zope2.Public (which should always be available to everyone) >>> from zope.security import checkPermission - >>> checkPermission('zope2.Public', self.folder) + >>> checkPermission('zope2.Public', dummy) True b) zope2.Private (which should never available to anyone) - >>> checkPermission('zope.Private', self.folder) + >>> checkPermission('zope.Private', dummy) False - >>> checkPermission('zope2.Private', self.folder) + >>> checkPermission('zope2.Private', dummy) False Any other standard Zope 2 permission will also resolve correctly: - >>> checkPermission('zope2.AccessContentsInformation', self.folder) - True + >>> checkPermission('zope2.ViewManagementScreens', dummy) + False Invalid permissions will obviously result in a negative response: - >>> checkPermission('notapermission', self.folder) + >>> checkPermission('notapermission', dummy) False Clean up: @@ -311,9 +318,12 @@ to create a permission that does not already exist, it is created on startup, with roles defaulting to Manager. - >>> from Testing.ZopeTestCase.placeless import setUp, tearDown + >>> from zope.component.testing import setUp, tearDown >>> setUp() + >>> from zope.component import eventtesting + >>> eventtesting.setUp() + First, we need to configure the relevant parts of AccessControl: >>> import AccessControl @@ -340,19 +350,20 @@ The permission will be made available globally, with default role set of ('Manager',). - - >>> roles = self.app.rolesOfPermission('AccessControl: Dummy permission') - >>> sorted(r['name'] for r in roles if r['selected']) - ['Manager'] + >>> import Products + >>> permissions = getattr(Products, '__ac_permissions__', ()) + >>> [p[2] for p in permissions + ... if p[0] == 'AccessControl: Dummy permission'] + [('Manager',)] + Let's also ensure that permissions are not overwritten if they exist already: - + >>> from AccessControl.Permission import _registeredPermissions - >>> import Products >>> _registeredPermissions['Dummy: Other dummy'] = 1 - >>> Products.__ac_permissions__ += (('Dummy: Other dummy', (), (),),) - >>> self.app.manage_permission('Dummy: Other dummy', roles=['Anonymous']) + >>> Products.__ac_permissions__ += ( + ... ('Dummy: Other dummy', (), ('Anonymous', ),),) >>> from StringIO import StringIO >>> configure_zcml = StringIO(''' @@ -369,13 +380,14 @@ >>> from zope.configuration.xmlconfig import xmlconfig >>> xmlconfig(configure_zcml) - >>> roles = self.app.rolesOfPermission('Dummy: Other dummy') - >>> sorted(r['name'] for r in roles if r['selected']) - ['Anonymous'] + >>> permissions = getattr(Products, '__ac_permissions__', ()) + >>> [p[2] for p in permissions + ... if p[0] == 'Dummy: Other dummy'] + [('Anonymous',)] >>> tearDown() """ def test_suite(): - from Testing.ZopeTestCase import ZopeDocTestSuite - return ZopeDocTestSuite() + import doctest + return doctest.DocTestSuite() _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org https://mail.zope.org/mailman/listinfo/zope-checkins