[Checkins] SVN: z3c.securitytool/trunk/src/z3c/securitytool/ Made tests into a functional test.

Daniel Blackburn blackburnd at gmail.com
Thu Dec 6 20:50:49 EST 2007


Log message for revision 82170:
  Made tests into a functional test.
  
  Adding ftesting.zcml to set up for functional tests.
  
  
  

Changed:
  U   z3c.securitytool/trunk/src/z3c/securitytool/README.txt
  A   z3c.securitytool/trunk/src/z3c/securitytool/ftesting.zcml
  U   z3c.securitytool/trunk/src/z3c/securitytool/securitytool.py
  U   z3c.securitytool/trunk/src/z3c/securitytool/tests.py

-=-
Modified: z3c.securitytool/trunk/src/z3c/securitytool/README.txt
===================================================================
--- z3c.securitytool/trunk/src/z3c/securitytool/README.txt	2007-12-06 18:53:26 UTC (rev 82169)
+++ z3c.securitytool/trunk/src/z3c/securitytool/README.txt	2007-12-07 01:50:47 UTC (rev 82170)
@@ -13,34 +13,44 @@
 
 
   >>> from pprint import pprint
+  >>> import zope
   >>> from zope.interface import implements
   >>> from zope.annotation.interfaces import IAttributeAnnotatable
   >>> from zope.app.container import contained
   >>> from zope.app.folder import Folder, rootFolder
+  >>> import persistent
 
+
   >>> from zope.app.authentication.principalfolder import Principal
   >>> from zope.securitypolicy.role import Role
   >>> from zope.security.permission import Permission
 
-  
+  >>> from zope.publisher.interfaces import IRequest
 
+  >>> from zope.component import provideAdapter  
+  >>> from zope.app.testing import ztapi
+  >>> from zope.app.folder.interfaces import IFolder
+  >>> import transaction
+
 The news agency, the Concord Times, is implementing a new article management
 system in Zope 3. In order to better understand their security situation, they
 have installed z3c.security tool. 
 
-  >>> concordTimes = rootFolder()
+  >>> concordTimes = getRootFolder()
   
 The Concord Times site is a folder which contains a Folder per issue and each
 issue contains articles.
 
   >>> class Issue(Folder):
-  ...     def __init__(self, title):
-  ...         self.title = title
-  ...
+  ...     implements(IFolder)
   ...     def __repr__(self):
   ...         return '<%s %r>' %(self.__class__.__name__, self.title)
 
-  >>> class Article(contained.Contained):
+  >>> ztapi.provideAdapter(
+  ...     IRequest, IFolder,
+  ...     Issue)
+
+  >>> class Article(contained.Contained, persistent.Persistent):
   ...     implements(IAttributeAnnotatable)
   ...
   ...     def __init__(self, title, text):
@@ -113,33 +123,75 @@
   >>> prinRoleManager.assignRoleToPrincipal(writer.id, markus.id)
   >>> prinRoleManager.assignRoleToPrincipal(janitor.id, daniel.id)
   >>> prinRoleManager.assignRoleToPrincipal(janitor.id, stephan.id)
+
+Lets set up the securityPolicy objects and the corresponding
+participation for our actors.
+
+  >>> from zope.security import testing
+  >>> from zope.securitypolicy import zopepolicy
+
+  >>> markus_policy = zopepolicy.ZopeSecurityPolicy()
+  >>> markus_part = testing.Participation(markus)
+  >>> markus_policy.add(markus_part)
+
+  >>> martin_policy = zopepolicy.ZopeSecurityPolicy()
+  >>> martin_part = testing.Participation(martin)
+  >>> martin_policy.add(martin_part)
+
+  >>> randy_policy = zopepolicy.ZopeSecurityPolicy()
+  >>> randy_part = testing.Participation(randy)
+  >>> randy_policy.add(randy_part)
+
+  >>> stephan_policy = zopepolicy.ZopeSecurityPolicy()
+  >>> stephan_part = testing.Participation(stephan)
+  >>> stephan_policy.add(stephan_part)
+
+  >>> daniel_policy = zopepolicy.ZopeSecurityPolicy()
+  >>> daniel_part = testing.Participation(daniel)
+  >>> daniel_policy.add(daniel_part)
   
 To allow editors to create articles Martin has to create a new Issue:
-    
-  >>> firstIssue = concordTimes['issue.1'] = \
-  ...     Issue('The very first issue of `The Concord Times`')
+     
+  >>> firstIssue = \
+  ...    Folder()
 
+
+  >>> concordTimes['firstIssue'] = firstIssue
+  >>> concordTimes._p_changed = 1
+  >>> transaction.commit()
+
 Randy starts to write his first article:
     
   >>> firstArticle = Article('A new star is born',
   ...                        'A new star is born, the `The Concord Times` ...')
   
   
-   >>> from zope.security import testing
-   >>> from zope.securitypolicy import zopepolicy
+Markus tries to give his fellow writer some help by attempting to
+create an Issue and of course cannot.
 
-  >>> policy = zopepolicy.ZopeSecurityPolicy()
-  >>> participation = testing.Participation(markus)
-  >>> policy.add(participation)
-  >>> policy.checkPermission(createIssue.id, concordTimes)
+  >>> markus_policy.checkPermission(createIssue.id, concordTimes)
   False
-  
-  >>> policy2 = zopepolicy.ZopeSecurityPolicy()
-  >>> participation2 = testing.Participation(martin)
-  >>> policy2.add(participation2)
-  >>> policy2.checkPermission(createIssue.id, concordTimes)
+
+
+Only Martin as the editor has createIssue priveleges.
+
+  >>> martin_policy.checkPermission(createIssue.id, concordTimes)
   True
   
 
-  
-  
\ No newline at end of file
+This is not yet complete. But this is the proper way to connect.
+Now lets see if the app displays the appropriate permissions.
+
+    >>> from zope.testbrowser.browser import Browser # use for external
+    >>> import base64
+    >>> manager = Browser()
+    >>> login,password = 'admin','admin'
+    >>> authHeader = "Basic %s" % base64.encodestring(
+    ...                            "%s:%s" % (login,password))
+
+    >>> manager.addHeader('Authorization', authHeader)
+    >>> manager.handleErrors = False
+
+    >>> #manager.open('http://localhost:8080/vum.html')
+
+

Added: z3c.securitytool/trunk/src/z3c/securitytool/ftesting.zcml
===================================================================
--- z3c.securitytool/trunk/src/z3c/securitytool/ftesting.zcml	                        (rev 0)
+++ z3c.securitytool/trunk/src/z3c/securitytool/ftesting.zcml	2007-12-07 01:50:47 UTC (rev 82170)
@@ -0,0 +1,92 @@
+<configure
+      xmlns="http://namespaces.zope.org/zope"
+      xmlns:browser="http://namespaces.zope.org/browser"
+      i18n_domain="">
+
+  <include package="zope.app.zcmlfiles" />
+
+  <include package="zope.viewlet" file="meta.zcml" />
+
+  <include package="z3c.macro" file="meta.zcml" />
+
+
+  <include package="zope.app.securitypolicy" file="meta.zcml" />
+
+  <include package="zope.app.authentication" />
+  <include package="zope.app.securitypolicy" />
+  <include package="zope.app.session" />
+  <include package="zope.app.twisted" />
+  <include package="z3c.macro" />
+
+  <include package="z3c.securitytool" file="configure.zcml" />
+
+  <securityPolicy
+    component="zope.securitypolicy.zopepolicy.ZopeSecurityPolicy" />
+
+  <role id="zope.Anonymous" title="Everybody" />
+  <role id="zope.role1" title="Role 1" />
+  <role id="zope.role2" title="Role 2" />
+
+  <role id="zope.Manager" title="Manager" />
+
+  <unauthenticatedPrincipal
+    id="zope.anybody"
+    title="Unauthenticated User"
+    />
+
+  <grant
+    role="zope.Anonymous"
+    principal="zope.anybody"
+    />
+
+  <principal
+    id="zope.sample_manager"
+    title="Sample Manager"
+    login="admin"
+    password="admin"
+    />
+
+  <principal
+    id="zope.user_1"
+    title="Sample User1"
+    login="user1"
+    password="user1"
+    />
+
+  <principal
+    id="zope.user_2"
+    title="Sample User2"
+    login="user2"
+    password="user2"
+    />
+
+  <grant
+    role="zope.Manager"
+    principal="zope.sample_manager"
+    />
+
+  <grant
+    role="zope.role1"
+    principal="zope.user_1"
+    />
+
+  <grant
+    role="zope.role2"
+    principal="zope.user_2"
+    />
+
+  <grantAll role="zope.Manager" />
+
+
+  <!-- Replace the following directive if you don't want public access
+  <grant permission="zope.View"
+                  role="zope.Anonymous" />
+  <grant permission="zope.app.dublincore.view"
+                  role="zope.Anonymous" />
+   -->
+
+</configure>
+
+
+
+

Modified: z3c.securitytool/trunk/src/z3c/securitytool/securitytool.py
===================================================================
--- z3c.securitytool/trunk/src/z3c/securitytool/securitytool.py	2007-12-06 18:53:26 UTC (rev 82169)
+++ z3c.securitytool/trunk/src/z3c/securitytool/securitytool.py	2007-12-07 01:50:47 UTC (rev 82170)
@@ -17,8 +17,8 @@
 from zope.securitypolicy.rolepermission import rolePermissionManager
 from zope.securitypolicy.principalrole import principalRoleManager
 
+#from zope.app.securitypolicy.zopepolicy import settingsForObject
 
-#from zope.app.securitypolicy.zopepolicy import settingsForObject
 from zope.session.interfaces import ISession
 from zope.app import zapi
 

Modified: z3c.securitytool/trunk/src/z3c/securitytool/tests.py
===================================================================
--- z3c.securitytool/trunk/src/z3c/securitytool/tests.py	2007-12-06 18:53:26 UTC (rev 82169)
+++ z3c.securitytool/trunk/src/z3c/securitytool/tests.py	2007-12-07 01:50:47 UTC (rev 82170)
@@ -18,85 +18,23 @@
 
 import unittest, doctest
 from zope.testing import module
-from zope.testing.doctestunit import DocFileSuite
+from zope.testing.doctestunit import DocFileSuite, DocTestSuite
+from zope.app.testing import placelesssetup, ztapi, functional, setup
+from z3c.securitytool import testing
 
-from zope.interface import Interface
-from zope.component import provideAdapter
-from zope.annotation.interfaces import IAnnotatable
-from zope.annotation.interfaces import IAttributeAnnotatable
-from zope.annotation.interfaces import IAnnotations
-from zope.annotation.attribute import AttributeAnnotations
-from zope.security.management import endInteraction
-
-from zope.app.testing import placelesssetup, ztapi
-from zope.securitypolicy.interfaces import IGrantInfo
-from zope.securitypolicy.interfaces import IPrincipalRoleManager
-from zope.securitypolicy.interfaces import IPrincipalPermissionManager
-from zope.securitypolicy.interfaces import IRolePermissionManager
-from zope.securitypolicy.principalpermission \
-     import AnnotationPrincipalPermissionManager
-from zope.securitypolicy.principalrole \
-     import AnnotationPrincipalRoleManager
-from zope.securitypolicy.rolepermission \
-     import AnnotationRolePermissionManager
-from zope.securitypolicy.grantinfo \
-     import AnnotationGrantInfo
-from zope.app.authentication import principalfolder
-
-from z3c.securitytool.securitytool import SecurityChecker
-
-def setUp(test):
-    placelesssetup.setUp()
-#    endInteraction()
-    ztapi.provideAdapter(
-        IAttributeAnnotatable, IAnnotations,
-        AttributeAnnotations)
-    ztapi.provideAdapter(
-        IAnnotatable, IPrincipalPermissionManager,
-        AnnotationPrincipalPermissionManager)
-    ztapi.provideAdapter(
-        IAnnotatable, IPrincipalRoleManager,
-        AnnotationPrincipalRoleManager)
-    ztapi.provideAdapter(
-        IAnnotatable, IRolePermissionManager,
-        AnnotationRolePermissionManager)
-    ztapi.provideAdapter(
-        IAnnotatable, IGrantInfo,
-        AnnotationGrantInfo)
-    # createPrincipalFolder(test)
-    # createPrincipals(test,'randy')
-    # createPrincipals(test,'markus')
-    # createPrincipals(test,'daniel')
-
-    module.setUp(test, 'z3c.securitytool.securitytool.README')
-    provideAdapter(SecurityChecker, (Interface,))
-
-# def defineRole(id, title=None, description=None):
-#     role = Role(id, title, description)
-#     ztapi.provideUtility(IRole, role, name=role.id)
-#     return role
-# 
-# def definePermission(id, title=None, description=None):
-#     perm = Permission(id, title, description)
-#     ztapi.provideUtility(IPermission, perm, name=perm.id)
-#     return perm
-# 
-# def createPrincipalFolder(test):
-#     test.globs['pf'] = principalfolder.PrincipalFolder(u'Members.')
-#     
-# def createPrincipals(test,name):
-#     principal = principalfolder.InternalPrincipal(
-#             name,'password',name,'SHA1')
-#     test.globs['pf'][name] = principal
-    
-    
 def test_suite():
     flags =  doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS
-    
+  
+    functionalTest = functional.FunctionalDocFileSuite(
+        'README.txt',optionflags=flags,globs={'lets': 'test'},
+        tearDown=placelesssetup.tearDown)
+
+    functionalTest.layer = testing.SecurityToolLayer
+
     return unittest.TestSuite((
-        DocFileSuite('README.txt',optionflags=flags,
-                     setUp=setUp, tearDown=placelesssetup.tearDown),
-        ))
+        #unitTest,
+        functionalTest,))
 
 if __name__ == '__main__':
     unittest.main(defaultTest='test_suite')
+



More information about the Checkins mailing list