[Checkins] SVN: z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/ - implemented basic auth login using pagelets

Michael Howitz mh at gocept.com
Tue Mar 3 15:00:37 EST 2009


Log message for revision 97457:
  - implemented basic auth login using pagelets
  - snapshot of session credentials login
  

Changed:
  U   z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/auth.py
  A   z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/login_failed.pt
  A   z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/login_success.pt
  A   z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/logout.pt
  A   z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/redirect.pt
  A   z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/session_cred_loginform.pt
  U   z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/zope.app.security.browser.zcml
  A   z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/login.txt
  U   z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/tests/ftesting.zcml
  U   z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/tests/test_layer.py

-=-
Modified: z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/auth.py
===================================================================
--- z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/auth.py	2009-03-03 19:58:03 UTC (rev 97456)
+++ z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/auth.py	2009-03-03 20:00:37 UTC (rev 97457)
@@ -16,6 +16,7 @@
 $Id$
 """
 import urllib
+import z3c.template.interfaces
 import zope.app.pagetemplate
 import zope.app.publisher.interfaces.http
 import zope.app.security.interfaces
@@ -23,6 +24,7 @@
 import zope.i18n
 import zope.i18nmessageid
 import zope.interface
+import zope.publisher.interfaces.browser
 import zope.viewlet.interfaces
 import zope.viewlet.manager
 import zope.viewlet.viewlet
@@ -47,10 +49,32 @@
 
 def logout_supported(request):
     "Tell whether logout is supported."
-    logout = zope.app.security.interfaces.ILogoutSupported(self.request, None)
+    logout = zope.app.security.interfaces.ILogoutSupported(request, None)
     return logout is not None
 
 
+def get_view_url(context, request, view_name):
+    "Compute the url of a view."
+    if view_name.startswith('@@'):
+        view_name = view_name[2:]
+        view_truncated = True
+    else:
+        view_truncated = False
+    view = zope.component.getMultiAdapter((context, request), name=view_name)
+    view_url = zope.component.getMultiAdapter(
+        (view, request), name='absolute_url')()
+    if view_truncated:
+        view_url = view_url.replace(view_name, '@@'+view_name)
+    return view_url
+
+
+def render_pagelet(context, request, view_name):
+    "Render a pagelet."
+    pagelet =  zope.component.getMultiAdapter(
+        (context, request), z3c.pagelet.interfaces.IPagelet, name=view_name)
+    return pagelet()
+
+
 class LoginViewlet(zope.viewlet.viewlet.ViewletBase):
     """Display login link when user is not logged in."""
 
@@ -60,7 +84,7 @@
 
     def render(self):
         return u'<a href="%s?nextURL=%s">%s</a>' % (
-                self.viewName,
+                get_view_url(self. context, self.request, self.viewName),
                 urllib.quote(self.request.getURL()),
                 zope.i18n.translate(
                     _('[Login]', default='Login'), context=self.request))
@@ -78,7 +102,7 @@
 
     def render(self):
         return u'<a href="%s?nextURL=%s">%s</a>' % (
-                self.viewName,
+                get_view_url(self. context, self.request, self.viewName),
                 urllib.quote(self.request.getURL()),
                 zope.i18n.translate(
                     _('[Logout]', default='Logout'), context=self.request))
@@ -88,48 +112,58 @@
 
     zope.interface.implements(zope.app.publisher.interfaces.http.ILogin)
 
-#     confirmation = zope.app.pagetemplate.ViewPageTemplateFile('login.pt')
-#     failed = zope.app.pagetemplate.ViewPageTemplateFile('login_failed.pt')
-
     def login(self, nextURL=None):
         # we don't want to keep challenging if we're authenticated
-        if zope.app.security.interfaces.IUnauthenticatedPrincipal.providedBy(
-            self.request.principal):
+        if not authenticated(self.request.principal):
             auth = zope.component.getUtility(
                 zope.app.security.interfaces.IAuthentication)
-            auth.unauthorized(self.request.principal.id, self.request)
-            return self.failed()
+            auth.unauthorized(
+                #self.request.principal.id, self.request)
+                None, self.request) # XXX correct this way?
+            return render_pagelet(self, self.request, 'login_failed.html')
         else:
             if nextURL is None:
-                return self.confirmation()
+                return render_pagelet(self, self.request, 'login_success.html')
             else:
                 self.request.response.redirect(nextURL)
 
 
+class LoginFailedPagelet(object):
+    "Pagelet to display login failed notice."
+
+
+class LoginSuccessfulPagelet(object):
+    "Pagelet to display login succecc notice."
+
+
 class HTTPAuthenticationLogout(object):
     """Since HTTP Authentication really does not know about logout, we are
     simply challenging the client again."""
 
     zope.interface.implements(zope.app.security.interfaces.ILogout)
 
-#     redirect = zope.app.pagetemplate.ViewPageTemplateFile('redirect.pt')
-#     confirmation = zope.app.pagetemplate.ViewPageTemplateFile('logout.pt')
-
-    def __init__(self, context, request):
-        self.context = context
-        self.request = request
-
     def logout(self, nextURL=None):
-        if zope.app.security.interfaces.IUnauthenticatedPrincipal.providedBy(
-            self.request.principal):
-            pass
-        else:
+        if authenticated(self.request.principal):
             auth = zope.component.getUtility(
                 zope.app.security.interfaces.IAuthentication)
             zope.app.security.interfaces.ILogout(auth).logout(self.request)
             if nextURL:
-                return self.redirect()
+                return render_pagelet(self, self.request, 'redirect.html')
         if nextURL is None:
-            return self.confirmation()
+            return render_pagelet(self, self.request, 'logout_success.html')
         else:
             return self.request.response.redirect(nextURL)
+
+
+class LogoutRedirectPagelet(object):
+    "Pagelet to display logout redirect."
+
+
+class LogoutSuccessPagelet(object):
+    "Pagelet to display logout success."
+
+
+class SessionCredentialsLoginForm(object):
+    "Login form using session credentials."
+
+

Added: z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/login_failed.pt
===================================================================
--- z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/login_failed.pt	                        (rev 0)
+++ z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/login_failed.pt	2009-03-03 20:00:37 UTC (rev 97457)
@@ -0,0 +1,10 @@
+<div>
+  <h1 i18n:translate="">Login Failed!</h1>
+
+  <p style="font-size: 150%">
+    <tal:block
+       i18n:translate="">You cancelled the login procedure.</tal:block>
+    <a tal:attributes="href python: view.request.get('nextURL', '.')"
+       i18n:translate="">Click here to return.</a>
+  </p>
+</div>


Property changes on: z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/login_failed.pt
___________________________________________________________________
Added: svn:keywords
   + Id Rev Date
Added: svn:eol-style
   + native

Added: z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/login_success.pt
===================================================================
--- z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/login_success.pt	                        (rev 0)
+++ z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/login_success.pt	2009-03-03 20:00:37 UTC (rev 97457)
@@ -0,0 +1,9 @@
+<div>
+  <h1 i18n:translate="">Login successful!</h1>
+  <p style="font-size: 200%" i18n:translate="">
+    You are now logged in as
+    <em tal:content="view/request/principal/title"
+        i18n:name="UserTitle">Joe Smith</em>.
+  </p>
+  <a href="." i18n:translate="">Back to the main page.</a>
+</div>


Property changes on: z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/login_success.pt
___________________________________________________________________
Added: svn:keywords
   + Id Rev Date
Added: svn:eol-style
   + native

Added: z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/logout.pt
===================================================================
--- z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/logout.pt	                        (rev 0)
+++ z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/logout.pt	2009-03-03 20:00:37 UTC (rev 97457)
@@ -0,0 +1,8 @@
+<div>
+  <h1 i18n:translate="">Logout successful!</h1>
+
+  <p style="font-size: 200%" i18n:translate="">
+    You are now logged out.
+  </p>
+  <a href="." i18n:translate="">Back to the main page.</a>
+</div>


Property changes on: z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/logout.pt
___________________________________________________________________
Added: svn:keywords
   + Id Rev Date
Added: svn:eol-style
   + native

Added: z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/redirect.pt
===================================================================
--- z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/redirect.pt	                        (rev 0)
+++ z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/redirect.pt	2009-03-03 20:00:37 UTC (rev 97457)
@@ -0,0 +1,9 @@
+<div>
+  <h1 i18n:translate="">You are being redirected!</h1>
+
+  <p style="font-size: 150%">
+    <a tal:attributes="href view/request/nextURL" i18n:translate="">
+      If you see this screen for more than 5 seconds, click here.
+    </a>
+  </p>
+</div>


Property changes on: z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/redirect.pt
___________________________________________________________________
Added: svn:keywords
   + Id Rev Date
Added: svn:eol-style
   + native

Added: z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/session_cred_loginform.pt
===================================================================
--- z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/session_cred_loginform.pt	                        (rev 0)
+++ z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/session_cred_loginform.pt	2009-03-03 20:00:37 UTC (rev 97457)
@@ -0,0 +1,36 @@
+<div tal:define="principal python:request.principal.id">
+  <p i18n:translate=""
+     tal:condition="python: principal == 'zope.anybody'">
+    Please provide Login Information
+  </p>
+  <p i18n:translate=""
+     tal:condition="python: principal != 'zope.anybody'">
+    You are not authorized to perform this action. However, you may login as a
+    different user who is authorized.
+  </p>
+  <form action="" method="post">
+    <div tal:omit-tag=""
+         tal:condition="python:principal != 'zope.anybody' and 'SUBMIT' in request">
+      <span tal:define="dummy python:request.response.redirect(request.get('camefrom', ''))" />
+    </div>
+    <div class="row">
+      <div class="label"><label for="login" i18n:translate="">User Name</label></div>
+      <div class="field">
+        <input type="text" name="login" id="login" />
+      </div>
+    </div>
+
+    <div class="row">
+      <div class="label"><label for="password" i18n:translate="">Password</label></div>
+      <div class="field">
+        <input type="password" name="password" id="password" />
+      </div>
+    </div>
+
+    <div class="row">
+      <input class="form-element" type="submit"
+             name="SUBMIT" value="Log in" i18n:attributes="value login-button" />
+    </div>
+    <input type="hidden" name="camefrom" tal:attributes="value request/camefrom | nothing">
+  </form>
+</div>


Property changes on: z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/session_cred_loginform.pt
___________________________________________________________________
Added: svn:keywords
   + Id Rev Date
Added: svn:eol-style
   + native

Modified: z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/zope.app.security.browser.zcml
===================================================================
--- z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/zope.app.security.browser.zcml	2009-03-03 19:58:03 UTC (rev 97456)
+++ z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/browser/zope.app.security.browser.zcml	2009-03-03 20:00:37 UTC (rev 97457)
@@ -1,8 +1,10 @@
 <configure
-    xmlns="http://namespaces.zope.org/zope"
-    xmlns:browser="http://namespaces.zope.org/browser"
-    i18n_domain="z3c">
+   xmlns="http://namespaces.zope.org/zope"
+   xmlns:browser="http://namespaces.zope.org/browser"
+   xmlns:z3c="http://namespaces.zope.org/z3c"
+   i18n_domain="z3c">
 
+  <!-- viewlets for login and logout links -->
   <browser:viewletManager
      name="login-logout"
      provides=".auth.ILoginLogoutViewletManager"
@@ -53,4 +55,71 @@
      layer="z3c.layer.pagelet.IPageletBrowserLayer"
      />
 
+  <z3c:pagelet
+     name="login_failed.html"
+     class=".auth.LoginFailedPagelet"
+     permission="zope.Public"
+     for=".auth.HTTPAuthenticationLogin"
+     />
+
+  <z3c:template
+     for=".auth.LoginFailedPagelet"
+     template="login_failed.pt"
+     layer="z3c.layer.pagelet.IPageletBrowserLayer"
+     />
+
+  <z3c:pagelet
+     name="login_success.html"
+     class=".auth.LoginSuccessfulPagelet"
+     permission="zope.Public"
+     for=".auth.HTTPAuthenticationLogin"
+     />
+
+  <z3c:template
+     for=".auth.LoginSuccessfulPagelet"
+     template="login_success.pt"
+     layer="z3c.layer.pagelet.IPageletBrowserLayer"
+     />
+
+  <z3c:pagelet
+     name="redirect.html"
+     class=".auth.LogoutRedirectPagelet"
+     permission="zope.Public"
+     for=".auth.HTTPAuthenticationLogout"
+     />
+
+  <z3c:template
+     for=".auth.LogoutRedirectPagelet"
+     template="redirect.pt"
+     layer="z3c.layer.pagelet.IPageletBrowserLayer"
+     />
+
+  <z3c:pagelet
+     name="logout_success.html"
+     class=".auth.LogoutSuccessPagelet"
+     permission="zope.Public"
+     for=".auth.HTTPAuthenticationLogout"
+     />
+
+  <z3c:template
+     for=".auth.LogoutSuccessPagelet"
+     template="logout.pt"
+     layer="z3c.layer.pagelet.IPageletBrowserLayer"
+     />
+
+  <!-- login form for session credentials  -->
+  <z3c:pagelet
+     name="loginForm.html"
+     for="*"
+     class=".auth.SessionCredentialsLoginForm"
+     permission="zope.Public"
+     layer="z3c.layer.pagelet.IPageletBrowserLayer"
+     />
+
+  <z3c:template
+     for=".auth.SessionCredentialsLoginForm"
+     layer="z3c.layer.pagelet.IPageletBrowserLayer"
+     template="session_cred_loginform.pt"
+     />
+
 </configure>

Added: z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/login.txt
===================================================================
--- z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/login.txt	                        (rev 0)
+++ z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/login.txt	2009-03-03 20:00:37 UTC (rev 97457)
@@ -0,0 +1,228 @@
+Login and logout
+----------------
+
+Login and logout work both for basic auth and cookie auth.
+
+
+Setup
+~~~~~
+
+To get login resp. logout links, the layout page template has to
+include the login-logout viewlet manger. Our sample template looks
+like this:
+
+  >>> import os.path
+  >>> template_path = os.path.join(os.path.dirname(__file__), "tests",
+  ...     "login-logout-template.pt")
+  >>> print file(template_path, "r").read()
+  <!DOCTYPE ...>
+  <html ...>
+    <head>
+      <title>PageletTest</title>
+    </head>
+    <body>
+      <tal:block replace="structure provider:login-logout" />
+    </body>
+  </html>
+
+This template is registered for the ``IContainer`` interface in the
+``ftesting.zcml`` file. After creating a container the template is
+used when browsing the container:
+
+  >>> from zope.container.btree import BTreeContainer
+  >>> getRootFolder()['container'] = BTreeContainer()
+
+Basic auth
+~~~~~~~~~~
+
+When the user is not logged in the login link is displayed:
+
+  >>> from zope.testbrowser.testing import Browser
+  >>> skinURL = 'http://localhost/++skin++PageletTestSkin/'
+  >>> browser = Browser()
+  >>> browser.open(skinURL + 'container/@@default.html')
+  >>> browser.url
+  'http://localhost/++skin++PageletTestSkin/container/@@default.html'
+  >>> print browser.contents
+  <!DOCTYPE ...>
+  <html ...>
+    <head>
+      <title>PageletTest</title>
+    </head>
+    <body>
+      <a href="http://localhost/++skin++PageletTestSkin/container/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">Login</a>
+    </body>
+  </html>
+
+Selecting the link leads to the login page, as we use basic auth here,
+we get an HTTP error 401 (unauthorized):
+
+  >>> browser.getLink('Login').click()
+  Traceback (most recent call last):
+  httperror_seek_wrapper: HTTP Error 401: Unauthorized
+  >>> login_url = browser.url
+  >>> login_url
+  'http://localhost/++skin++PageletTestSkin/container/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html'
+
+When adding correct credentials we get authorized:
+
+  >>> browser.addHeader('Authorization', 'Basic mgr:mgrpw')
+  >>> browser.reload()
+
+We are redirected to the page where we selected the login link. After
+logging in the login link is no longer displayed. As we did not
+specify that logout is supported, no logout link is displayed:
+
+  >>> browser.url
+  'http://localhost/++skin++PageletTestSkin/container/@@default.html'
+  >>> print browser.contents
+  <!DOCTYPE ...>
+  <html ...>
+    <head>
+      <title>PageletTest</title>
+    </head>
+    <body>
+    </body>
+  </html>
+
+Calling the login URL again leads directly to the page referred in nextURL:
+
+  >>> browser.open(login_url)
+  >>> browser.url
+  'http://localhost/++skin++PageletTestSkin/container/@@default.html'
+  >>> print browser.contents
+  <!DOCTYPE ...>
+  <html ...>
+    <head>
+      <title>PageletTest</title>
+    </head>
+    <body>
+    </body>
+  </html>
+
+Calling the login URL again without the query parameter leeds to a
+confirmation page telling that login was successfull:
+
+  >>> browser.open(login_url.split('?')[0])
+  >>> browser.url
+  'http://localhost/++skin++PageletTestSkin/container/@@login.html'
+  >>> print browser.contents
+  <!DOCTYPE ...>
+  <html ...>
+  <head>
+  <title>PageletTestLayout</title>
+  </head>
+  <body>
+    <div>
+     <h1>Login successful!</h1>
+     <p style="font-size: 200%"> You are now logged in as <em>Manager</em>. </p>
+     <a href=".">Back to the main page.</a>
+    </div>
+  </body>
+  </html>
+
+Selecting the ``Back to the main page.`` link send the user back to
+the default view of the container. (``ftesting.zcml`` defines ``@@default.html``as the default view.):
+
+  >>> browser.getLink('Back to the main page.').click()
+  >>> browser.url
+  'http://localhost/++skin++PageletTestSkin/container/'
+  >>> print browser.contents
+  <!DOCTYPE ...>
+  <html ...>
+    <head>
+      <title>PageletTest</title>
+    </head>
+    <body>
+    </body>
+  </html>
+
+
+Providing an ``ILogoutSupported`` adapter leads to a logout link being
+displayed:
+
+  >>> from zope.app.testing import ztapi
+  >>> import zope.interface
+  >>> import zope.app.security
+  >>> import zope.app.security.interfaces
+  >>> ztapi.provideAdapter(
+  ...     zope.interface.Interface,
+  ...     zope.app.security.interfaces.ILogoutSupported,
+  ...     zope.app.security.LogoutSupported)
+  >>> browser.reload()
+  >>> browser.url
+  'http://localhost/++skin++PageletTestSkin/container/'
+  >>> print browser.contents
+  <!DOCTYPE ...>
+  <html ...>
+    <head>
+      <title>PageletTest</title>
+    </head>
+    <body>
+      <a href="http://localhost/++skin++PageletTestSkin/container/@@logout.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">Logout</a>
+    </body>
+  </html>
+
+Logout is done using JavaScript and a redirect. As testbrowser is not
+able to execute JavaScript the user remains authenticated:
+
+  >>> browser.getLink('Logout').click()
+  >>> logout_url = browser.url
+  >>> logout_url
+  'http://localhost/++skin++PageletTestSkin/container/@@logout.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html'
+  >>> print browser.contents
+  <!DOCTYPE ...>
+  <html ...>
+  <head>
+  <title>PageletTestLayout</title>
+  </head>
+  <body>
+    <div>
+    <h1>You are being redirected!</h1>
+    <p style="font-size: 150%">
+      <a href="http://localhost/++skin++PageletTestSkin/container/@@default.html">
+        If you see this screen for more than 5 seconds, click here.
+      </a>
+    </p>
+  </div>
+  </body>
+  </html>
+
+Calling the logout URL again after logout (simulated using a new
+browser instance) leads directly to the page referred in nextURL:
+
+  >>> browser2 = Browser(logout_url)
+  >>> browser2.url
+  'http://localhost/++skin++PageletTestSkin/container/@@default.html'
+  >>> print browser2.contents
+  <!DOCTYPE ...>
+  <html ...>
+    <head>
+      <title>PageletTest</title>
+    </head>
+    <body>
+      <a href="http://localhost/++skin++PageletTestSkin/container/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">Login</a>
+    </body>
+  </html>
+
+Calling the logout URL again without the query parameter leeds to a
+confirmation page telling that logout was successfull:
+
+  >>> browser2.open(logout_url.split('?')[0])
+  >>> browser2.url
+  'http://localhost/++skin++PageletTestSkin/container/@@logout.html'
+  >>> print browser2.contents
+  <!DOCTYPE ...>
+  <html ...>
+  <head>
+  <title>PageletTestLayout</title>
+  </head>
+  <body>
+    <div>
+      <h1>Logout successful!</h1>
+      <p style="font-size: 200%"> You are now logged out. </p>
+      <a href=".">Back to the main page.</a>
+    </div>
+  </body>
+  </html>
+


Property changes on: z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/login.txt
___________________________________________________________________
Added: svn:keywords
   + Id Rev Date
Added: svn:eol-style
   + native

Modified: z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/tests/ftesting.zcml
===================================================================
--- z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/tests/ftesting.zcml	2009-03-03 19:58:03 UTC (rev 97456)
+++ z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/tests/ftesting.zcml	2009-03-03 20:00:37 UTC (rev 97457)
@@ -48,6 +48,7 @@
   <include package="zope.app.publication" />
   <include package="zope.app.publisher.browser" />
   <include package="zope.app.security" />
+  <include package="zope.app.authentication" />
   <include package="zope.securitypolicy" />
   <include package="zope.app.twisted" />
   <include package="zope.app.wsgi" />
@@ -58,6 +59,7 @@
   <include package="zope.traversing" />
   <include package="zope.traversing.browser" />
   <include package="zope.viewlet" />
+  <include package="zope.session" />
 
 
   <!-- z3c component -->
@@ -117,6 +119,7 @@
         class=".SystemErrorPage"
         />
 
+    <!-- page for bugfix.txt -->
     <browser:page
         for="*"
         name="container_contents.html"
@@ -126,13 +129,27 @@
         />
 
     <!-- definitions for login-logout tests -->
+    <!-- use special template for default.html view -->
     <z3c:layout
-        for="zope.container.interfaces.IContainer"
+        for=".LoginLogoutPage"
         layer="z3c.layer.pagelet.IPageletBrowserLayer"
         template="login-logout-template.pt"
         />
 
+    <z3c:pagelet
+        for="zope.container.interfaces.IContainer"
+        name="default.html"
+        permission="zope.View"
+        class=".LoginLogoutPage"
+        layer="z3c.layer.pagelet.IPageletBrowserLayer"
+        />
 
+    <browser:defaultView
+       name="default.html"
+       for="zope.container.interfaces.IContainer"
+       layer="z3c.layer.pagelet.IPageletBrowserLayer"
+       />
+
   </configure>
 
 
@@ -149,8 +166,8 @@
   <principal
       id="zope.manager"
       title="Manager"
-      login="Manager"
-      password="password"
+      login="mgr"
+      password="mgrpw"
       />
 
   <grant

Modified: z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/tests/test_layer.py
===================================================================
--- z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/tests/test_layer.py	2009-03-03 19:58:03 UTC (rev 97456)
+++ z3c.layer.pagelet/branches/icemac_login_support/src/z3c/layer/pagelet/tests/test_layer.py	2009-03-03 20:00:37 UTC (rev 97457)
@@ -38,9 +38,6 @@
 def test_suite():
     suite = unittest.TestSuite()
     suite.addTest(create_suite('../README.txt', checker=checker))
+    suite.addTest(create_suite('../login.txt', checker=checker))
     suite.addTest(create_suite('bugfixes.txt'))
     return suite
-
-
-if __name__ == '__main__':
-    unittest.main(defaultTest='test_suite')



More information about the Checkins mailing list