[Checkins] SVN: Products.CMFCore/trunk/Products/CMFCore/ CookieCrumbler is now a UniqueObject.

Charlie Clark charlie at begeistert.org
Mon Apr 19 07:42:28 EDT 2010


Log message for revision 111083:
  CookieCrumbler is now a UniqueObject.
  Tests that depend on a specific id have been updated
  _create_forms method removed.

Changed:
  U   Products.CMFCore/trunk/Products/CMFCore/CookieCrumbler.py
  U   Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_cookieauth.py
  U   Products.CMFCore/trunk/Products/CMFCore/tests/test_CookieCrumbler.py

-=-
Modified: Products.CMFCore/trunk/Products/CMFCore/CookieCrumbler.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/CookieCrumbler.py	2010-04-19 11:03:07 UTC (rev 111082)
+++ Products.CMFCore/trunk/Products/CMFCore/CookieCrumbler.py	2010-04-19 11:42:27 UTC (rev 111083)
@@ -53,7 +53,7 @@
     """
 
 
-class CookieCrumbler(PropertyManager, SimpleItem):
+class CookieCrumbler(UniqueObject, PropertyManager, SimpleItem):
 
     """Reads cookies during traversal and simulates the HTTP auth headers.
     """
@@ -101,29 +101,36 @@
     name_cookie = '__ac_name'
     pw_cookie = '__ac_password'
     persist_cookie = '__ac_persistent'
+    local_cookie_path = False
+    cache_header_value = 'private'
+    log_username = True
+    # the following properties are deprecated and will be replaced by
+    # user actions
     auto_login_page = 'login_form'
     unauth_page = ''
     logout_page = 'logged_out'
-    local_cookie_path = False
-    cache_header_value = 'private'
-    log_username = True
-    
-    def __init__(self, id=None):
-        if id is not None:
-            self.id = str(id)
+    id = 'cookie_authentication'
 
     security.declarePrivate('delRequestVar')
     def delRequestVar(self, req, name):
         # No errors of any sort may propagate, and we don't care *what*
         # they are, even to log them.
-        try: del req.other[name]
-        except: pass
-        try: del req.form[name]
-        except: pass
-        try: del req.cookies[name]
-        except: pass
-        try: del req.environ[name]
-        except: pass
+        try: 
+            del req.other[name]
+        except: 
+            pass
+        try: 
+            del req.form[name]
+        except: 
+            pass
+        try: 
+            del req.cookies[name]
+        except: 
+            pass
+        try: 
+            del req.environ[name]
+        except: 
+            pass
 
     security.declarePublic('getCookiePath')
     def getCookiePath(self):
@@ -429,30 +436,23 @@
         #
         # No errors of any sort may propagate, and we don't care *what*
         # they are, even to log them.
-        try: del self.resp.unauthorized
-        except: pass
-        try: del self.resp._unauthorized
-        except: pass
-        try: del self.resp
-        except: pass
+        try: 
+            del self.resp.unauthorized
+        except: 
+            pass
+        try: 
+            del self.resp._unauthorized
+        except: 
+            pass
+        try:
+            del self.resp
+        except:
+            pass
 
 
 manage_addCCForm = HTMLFile('dtml/addCC', globals())
 manage_addCCForm.__name__ = 'addCC'
 
-def _create_forms(ob):
-    ''' Create default forms inside ob '''
-    import os
-    from OFS.DTMLMethod import addDTMLMethod
-    dtmldir = os.path.join(os.path.dirname(__file__), 'dtml')
-    for fn in ('index_html', 'logged_in', 'logged_out', 'login_form',
-                'standard_login_footer', 'standard_login_header'):
-        filename = os.path.join(dtmldir, fn + '.dtml')
-        f = open(filename, 'rt')
-        try: data = f.read()
-        finally: f.close()
-        addDTMLMethod(ob, fn, file=data)
-
 def manage_addCC(dispatcher, id, create_forms=0, REQUEST=None):
     ' '
     ob = CookieCrumbler()

Modified: Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_cookieauth.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_cookieauth.py	2010-04-19 11:03:07 UTC (rev 111082)
+++ Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_cookieauth.py	2010-04-19 11:42:27 UTC (rev 111083)
@@ -30,7 +30,7 @@
 
 _COOKIECRUMBLER_BODY = """\
 <?xml version="1.0"?>
-<object name="foo_cookiecrumbler" meta_type="Cookie Crumbler">
+<object name="cookie_authentication" meta_type="Cookie Crumbler">
  <property name="auth_cookie">__ac</property>
  <property name="name_cookie">__ac_name</property>
  <property name="pw_cookie">__ac_password</property>
@@ -46,7 +46,7 @@
 
 _DEFAULT_EXPORT = """\
 <?xml version="1.0"?>
-<object name="foo_cookiecrumbler" meta_type="Cookie Crumbler">
+<object name="cookie_authentication" meta_type="Cookie Crumbler">
  <property name="auth_cookie">__ac</property>
  <property name="name_cookie">__ac_name</property>
  <property name="pw_cookie">__ac_password</property>
@@ -62,7 +62,7 @@
 
 _CHANGED_EXPORT = """\
 <?xml version="1.0"?>
-<object name="foo_cookiecrumbler" meta_type="Cookie Crumbler">
+<object name="cookie_authentication" meta_type="Cookie Crumbler">
  <property name="auth_cookie">value1</property>
  <property name="name_cookie">value3</property>
  <property name="pw_cookie">value5</property>
@@ -88,7 +88,7 @@
         return CookieCrumblerXMLAdapter
 
     def setUp(self):
-        self._obj = CookieCrumbler('foo_cookiecrumbler')
+        self._obj = CookieCrumbler()
         self._BODY = _COOKIECRUMBLER_BODY
 
 
@@ -97,7 +97,7 @@
     def _initSite(self, use_changed=False):
         self.root.site = Folder(id='site')
         site = self.root.site
-        cc = site.cookie_authentication = CookieCrumbler('foo_cookiecrumbler')
+        cc = site.cookie_authentication = CookieCrumbler()
 
         if use_changed:
             cc.auth_cookie = 'value1'

Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_CookieCrumbler.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_CookieCrumbler.py	2010-04-19 11:03:07 UTC (rev 111082)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_CookieCrumbler.py	2010-04-19 11:42:27 UTC (rev 111083)
@@ -41,8 +41,6 @@
 
 class CookieCrumblerTests(unittest.TestCase, PlacelessSetup):
 
-    _CC_ID = 'cookie_authentication'
-
     def _getTargetClass(self):
         from Products.CMFCore.CookieCrumbler  import CookieCrumbler
         return CookieCrumbler
@@ -92,7 +90,6 @@
         root._setObject(users.id, users)
 
         cc = self._makeOne()
-        cc.id = self._CC_ID
         root._setObject(cc.id, cc)
 
         index = DTMLMethod()
@@ -349,41 +346,24 @@
         self.assertEqual(req['AUTHENTICATED_USER'].getUserName(),
                          'isaac')
 
-    def testCreateForms(self):
-        # Verify the factory creates the login forms.
-        from Products.CMFCore.CookieCrumbler  import manage_addCC
-
-        if 'CMFCore' in self._getTargetClass().__module__:
-            # This test is disabled in CMFCore.
-            return
-
-        root, cc, req, credentials = self._makeSite()
-        root._delObject('cookie_authentication')
-        manage_addCC(root, 'login', create_forms=1)
-        ids = root.login.objectIds()
-        ids.sort()
-        self.assertEqual(tuple(ids), (
-            'index_html', 'logged_in', 'logged_out', 'login_form',
-            'standard_login_footer', 'standard_login_header'))
-
     def test_before_traverse_hooks(self):
         from OFS.Folder import Folder
         container = Folder()
-        cc = self._makeOne(self._CC_ID)
+        cc = self._makeOne()
 
         marker = []
         bt_before = getattr(container, '__before_traverse__', marker)
         self.failUnless(bt_before is marker)
 
-        container._setObject(self._CC_ID, cc)
+        container._setObject(cc.id, cc)
 
         bt_added = getattr(container, '__before_traverse__')
         self.assertEqual(len(bt_added.items()), 1)
         k, v = bt_added.items()[0]
         self.failUnless(k[1].startswith(self._getTargetClass().meta_type))
-        self.assertEqual(v.name, self._CC_ID)
+        self.assertEqual(v.name, cc.id)
 
-        container._delObject(self._CC_ID)
+        container._delObject(cc.id)
 
         bt_removed = getattr(container, '__before_traverse__')
         self.assertEqual(len(bt_removed.items()), 0)



More information about the checkins mailing list