summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGary Wilson Jr <gary.wilson@gmail.com>2009-03-30 22:52:48 +0000
committerGary Wilson Jr <gary.wilson@gmail.com>2009-03-30 22:52:48 +0000
commit13ea4a913386d8374b6df82c49d4c3c895b926ba (patch)
tree5eef325a8c4eaac2b3a684c820589b10ded9def1
parentfea6c73538148a7362a9cdd85bbc4732ddb4204d (diff)
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
-rw-r--r--django/test/client.py6
-rw-r--r--tests/modeltests/test_client/models.py1
-rw-r--r--tests/regressiontests/test_client_regress/models.py8
3 files changed, 12 insertions, 3 deletions
diff --git a/django/test/client.py b/django/test/client.py
index b1421901e2..47232ef146 100644
--- a/django/test/client.py
+++ b/django/test/client.py
@@ -431,12 +431,14 @@ class Client(object):
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):
diff --git a/tests/modeltests/test_client/models.py b/tests/modeltests/test_client/models.py
index dfc84169f3..c8f1d42725 100644
--- a/tests/modeltests/test_client/models.py
+++ b/tests/modeltests/test_client/models.py
@@ -423,4 +423,3 @@ class ClientTest(TestCase):
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')
-
diff --git a/tests/regressiontests/test_client_regress/models.py b/tests/regressiontests/test_client_regress/models.py
index 5d650923a4..71d6a149d0 100644
--- a/tests/regressiontests/test_client_regress/models.py
+++ b/tests/regressiontests/test_client_regress/models.py
@@ -505,6 +505,14 @@ class SessionTests(TestCase):
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"