[Repoze-checkins] r1647 - in repoze.who/trunk: . repoze/who repoze/who/plugins

Chris McDonough chrism at agendaless.com
Fri Aug 22 10:47:05 EDT 2008


Author: Chris McDonough <chrism at agendaless.com>
Date: Fri Aug 22 10:47:05 2008
New Revision: 1647

Log:
Fix bug reported by Wiggy on IRC.


Modified:
   repoze.who/trunk/CHANGES.txt
   repoze.who/trunk/repoze/who/plugins/auth_tkt.py
   repoze.who/trunk/repoze/who/tests.py

Modified: repoze.who/trunk/CHANGES.txt
==============================================================================
--- repoze.who/trunk/CHANGES.txt	(original)
+++ repoze.who/trunk/CHANGES.txt	Fri Aug 22 10:47:05 2008
@@ -1,6 +1,11 @@
 repoze.who changes
 ==================
 
+Next release
+
+ - Fix auth_tkt plugin to set the same cookies in its ``remember`` method that 
+   it does in its ``forget`` method.
+
 1.0.4 (2008/08/22)
 
  - Added a key to the '[general]' config section: ``remote_user_key``.

Modified: repoze.who/trunk/repoze/who/plugins/auth_tkt.py
==============================================================================
--- repoze.who/trunk/repoze/who/plugins/auth_tkt.py	(original)
+++ repoze.who/trunk/repoze/who/plugins/auth_tkt.py	Fri Aug 22 10:47:05 2008
@@ -29,7 +29,6 @@
         self.cookie_name = cookie_name
         self.include_ip = include_ip
         self.secure = secure
-        self.include_ip = include_ip
 
     # IIdentifier
     def identify(self, environ):
@@ -72,19 +71,23 @@
         identity['userdata'] = user_data
         return identity
 
-    # IIdentifier
-    def forget(self, environ, identity):
-        # return a expires Set-Cookie header
+    def _get_cookies(self, environ, value):
         cur_domain = environ.get('HTTP_HOST', environ.get('SERVER_NAME'))
         wild_domain = '.' + cur_domain
         cookies = [
-            ('Set-Cookie', '%s=""; Path=/' % self.cookie_name),
-            ('Set-Cookie', '%s=""; Path=/; Domain=%s' %
-             (self.cookie_name, cur_domain)),
-            ('Set-Cookie', '%s=""; Path=/; Domain=%s' %
-             (self.cookie_name, wild_domain)),
+            ('Set-Cookie', '%s=%s; Path=/' % (
+            self.cookie_name, value)),
+            ('Set-Cookie', '%s=%s; Path=/; Domain=%s' % (
+            self.cookie_name, value, cur_domain)),
+            ('Set-Cookie', '%s=%s; Path=/; Domain=%s' % (
+            self.cookie_name, value, wild_domain))
             ]
         return cookies
+
+    # IIdentifier
+    def forget(self, environ, identity):
+        # return a set of expires Set-Cookie headers
+        return self._get_cookies(environ, '""')
     
     # IIdentifier
     def remember(self, environ, identity):
@@ -134,11 +137,12 @@
                 cookie_name=self.cookie_name,
                 secure=self.secure)
             new_cookie_value = ticket.cookie_value()
+            
+            cur_domain = environ.get('HTTP_HOST', environ.get('SERVER_NAME'))
+            wild_domain = '.' + cur_domain
             if old_cookie_value != new_cookie_value:
-                # return a Set-Cookie header
-                set_cookie = '%s=%s; Path=/;' % (self.cookie_name,
-                                                 new_cookie_value)
-                return [('Set-Cookie', set_cookie)]
+                # return a set of Set-Cookie headers
+                return self._get_cookies(environ, new_cookie_value)
 
     def __repr__(self):
         return '<%s %s>' % (self.__class__.__name__, id(self))

Modified: repoze.who/trunk/repoze/who/tests.py
==============================================================================
--- repoze.who/trunk/repoze/who/tests.py	(original)
+++ repoze.who/trunk/repoze/who/tests.py	Fri Aug 22 10:47:05 2008
@@ -1521,8 +1521,16 @@
         new_val = self._makeTicket(userid='other', userdata='userdata')
         result = plugin.remember(environ, {'repoze.who.userid':'other',
                                            'userdata':'userdata'})
-        expected = 'auth_tkt=%s; Path=/;' % new_val
-        self.assertEqual(result, [('Set-Cookie', expected)])
+        self.assertEqual(len(result), 3)
+        self.assertEqual(result[0],
+                         ('Set-Cookie',
+                          'auth_tkt=%s; Path=/' % new_val))
+        self.assertEqual(result[1],
+                         ('Set-Cookie',
+                           'auth_tkt=%s; Path=/; Domain=localhost' % new_val))
+        self.assertEqual(result[2],
+                         ('Set-Cookie',
+                           'auth_tkt=%s; Path=/; Domain=.localhost' % new_val))
 
     def test_remember_creds_different_int_userid(self):
         plugin = self._makeOne('secret')
@@ -1532,8 +1540,10 @@
         result = plugin.remember(environ, {'repoze.who.userid':1,
                                            'userdata':''})
         
-        expected = 'auth_tkt=%s; Path=/;' % new_val
-        self.assertEqual(result, [('Set-Cookie', expected)])
+        self.assertEqual(len(result), 3)
+        self.assertEqual(result[0],
+                         ('Set-Cookie',
+                          'auth_tkt=%s; Path=/' % new_val))
 
     def test_remember_creds_different_long_userid(self):
         plugin = self._makeOne('secret')
@@ -1542,9 +1552,10 @@
         new_val = self._makeTicket(userid='1', userdata='userid_type:int')
         result = plugin.remember(environ, {'repoze.who.userid':long(1),
                                            'userdata':''})
-        
-        expected = 'auth_tkt=%s; Path=/;' % new_val
-        self.assertEqual(result, [('Set-Cookie', expected)])
+        self.assertEqual(len(result), 3)
+        self.assertEqual(result[0],
+                         ('Set-Cookie',
+                          'auth_tkt=%s; Path=/' % new_val))
 
     def test_remember_creds_different_unicode_userid(self):
         plugin = self._makeOne('secret')
@@ -1555,9 +1566,11 @@
                                    userdata='userid_type:unicode')
         result = plugin.remember(environ, {'repoze.who.userid':userid,
                                            'userdata':''})
-        expected = 'auth_tkt=%s; Path=/;' % new_val
         self.assertEqual(type(result[0][1]), str)
-        self.assertEqual(result, [('Set-Cookie', expected)])
+        self.assertEqual(len(result), 3)
+        self.assertEqual(result[0],
+                         ('Set-Cookie',
+                          'auth_tkt=%s; Path=/' % new_val))
 
     def test_forget(self):
         plugin = self._makeOne('secret')


More information about the Repoze-checkins mailing list