[Checkins] SVN: Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/ Add an ftest

Philipp von Weitershausen philikon at philikon.de
Sat Jul 12 11:11:29 EDT 2008


Log message for revision 88290:
  Add an ftest
  

Changed:
  U   Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/ftesting.zcml
  A   Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/tests/test_functional.py

-=-
Modified: Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/ftesting.zcml
===================================================================
--- Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/ftesting.zcml	2008-07-12 14:24:03 UTC (rev 88289)
+++ Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/ftesting.zcml	2008-07-12 15:11:29 UTC (rev 88290)
@@ -6,4 +6,28 @@
   <include package="megrok.menu" file="meta.zcml" />
   <grok:grok package="megrok.menu.tests" />
 
+  <securityPolicy
+      component="zope.securitypolicy.zopepolicy.ZopeSecurityPolicy"
+      />
+
+  <unauthenticatedPrincipal
+      id="zope.anybody"
+      title="Unauthenticated User"
+      />
+  <grant
+      permission="zope.View"
+      principal="zope.anybody"
+      />
+
+  <principal
+      id="zope.mgr"
+      title="Manager"
+      login="mgr"
+      password="mgrpw"
+      />
+
+  <role id="zope.Manager" title="Site Manager" />
+  <grantAll role="zope.Manager" />
+  <grant role="zope.Manager" principal="zope.mgr" />
+
 </configure>
\ No newline at end of file

Added: Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/tests/test_functional.py
===================================================================
--- Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/tests/test_functional.py	                        (rev 0)
+++ Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/tests/test_functional.py	2008-07-12 15:11:29 UTC (rev 88290)
@@ -0,0 +1,114 @@
+"""
+Let's create a Mammoth object in the root folder so we can access
+views through the publisher:
+
+  >>> from zope.app.testing.functional import getRootFolder
+  >>> root = getRootFolder()
+  >>> root['manfred'] = Mammoth()
+
+As an anonymous user, we only see the unprotected menu items:
+
+  >>> from zope.testbrowser.testing import Browser
+  >>> browser = Browser('http://localhost/manfred/showmenu')
+  >>> print browser.contents
+  [{'action': 'edit',
+    'description': u'',
+    'extra': None,
+    'icon': None,
+    'selected': u'',
+    'submenu': None,
+    'title': 'Edit'},
+   {'action': 'index',
+    'description': u'',
+    'extra': None,
+    'icon': None,
+    'selected': u'',
+    'submenu': None,
+    'title': 'View'}]
+
+After logging in as a manager, we also see the protected one:
+
+  >>> browser.addHeader('Authorization', 'Basic mgr:mgrpw')
+  >>> browser.open('http://localhost/manfred/showmenu')
+  >>> print browser.contents
+  [{'action': 'edit',
+    'description': u'',
+    'extra': None,
+    'icon': None,
+    'selected': u'',
+    'submenu': None,
+    'title': 'Edit'},
+   {'action': 'index',
+    'description': u'',
+    'extra': None,
+    'icon': None,
+    'selected': u'',
+    'submenu': None,
+    'title': 'View'},
+   {'action': 'manage',
+    'description': u'',
+    'extra': None,
+    'icon': None,
+    'selected': u'',
+    'submenu': None,
+    'title': 'Manage'}]
+
+"""
+import grok
+import megrok.menu
+from pprint import pformat
+from zope.component import getUtility
+from zope.app.publisher.interfaces.browser import IBrowserMenu
+
+class Mammoth(grok.Model):
+    pass
+
+class Actions(megrok.menu.Menu):
+    grok.name('actions')
+    grok.title('Actions')
+    grok.description('')
+
+# You can either refer to the menu class itself:
+
+class Index(grok.View):
+    grok.title('View')
+    megrok.menu.menuitem(Actions)
+
+    def render(self):
+        return 'index'
+
+# or you can refer to its identifier:
+
+class Edit(grok.View):
+    grok.title('Edit')
+    megrok.menu.menuitem('actions')
+
+    def render(self):
+        return 'edit'
+
+# Here's a view that's protected by a permission. We expect the menu
+# item that we configure for it to have the same permission setting:
+
+class ManageStuff(grok.Permission):
+    grok.name('my.ManageStuff')
+
+class Manage(grok.View):
+    grok.require(ManageStuff)
+    grok.title('Manage')
+    megrok.menu.menuitem('actions')
+
+    def render(self):
+        return 'manage'
+
+class ShowMenu(grok.View):
+
+    def render(self):
+        menu = getUtility(IBrowserMenu, 'actions')
+        return pformat(menu.getMenuItems(self.context, self.request))
+
+def test_suite():
+    from zope.testing import doctest
+    from megrok.menu.tests import FunctionalLayer
+    suite = doctest.DocTestSuite()
+    suite.layer = FunctionalLayer
+    return suite


Property changes on: Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/tests/test_functional.py
___________________________________________________________________
Name: svn:eol-style
   + native



More information about the Checkins mailing list