Permalink
Browse files

Fixed #9978 -- Fixed a KeyError exception that was being raised when …

…using the logout method on the test client on an unauthenticated user, based on patch from ericholscher.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@10228 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
gdub committed Mar 30, 2009
1 parent fea6c73 commit 13ea4a913386d8374b6df82c49d4c3c895b926ba
View
@@ -431,12 +431,14 @@ def login(self, **credentials):
def logout(self):
"""
- Removes the authenticated user's cookies.
+ Removes the authenticated user's cookies and session object.
Causes the authenticated user to be logged out.
"""
session = import_module(settings.SESSION_ENGINE).SessionStore()
- session.delete(session_key=self.cookies[settings.SESSION_COOKIE_NAME].value)
+ session_cookie = self.cookies.get(settings.SESSION_COOKIE_NAME)
+ if session_cookie:
+ session.delete(session_key=session_cookie.value)
self.cookies = SimpleCookie()
def _handle_redirects(self, response):
@@ -423,4 +423,3 @@ def test_mass_mail_sending(self):
self.assertEqual(mail.outbox[1].from_email, 'from@example.com')
self.assertEqual(mail.outbox[1].to[0], 'second@example.com')
self.assertEqual(mail.outbox[1].to[1], 'third@example.com')
-
@@ -505,6 +505,14 @@ def test_session(self):
self.assertEqual(response.status_code, 200)
self.assertEqual(response.content, 'YES')
+ def test_logout(self):
+ """Logout should work whether the user is logged in or not (#9978)."""
+ self.client.logout()
+ login = self.client.login(username='testclient',password='password')
+ self.failUnless(login, 'Could not log in')
+ self.client.logout()
+ self.client.logout()
+
class RequestMethodTests(TestCase):
def test_get(self):
"Request a view via request method GET"

0 comments on commit 13ea4a9

Please sign in to comment.