Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

[1.0.X]: Fixed #9978 -- Fixed a KeyError exception that was being rai…

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

Backport of r10228 from trunk.


git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.0.X@10236 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 9bbf94112f011276d4e25b21676cfc2b74aaaef5 1 parent 22ac97b
@gdub gdub authored
View
6 django/test/client.py
@@ -334,10 +334,12 @@ 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__(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()
View
1  tests/modeltests/test_client/models.py
@@ -411,4 +411,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')
-
View
19 tests/regressiontests/test_client_regress/models.py
@@ -309,17 +309,17 @@ def test_exception_cleared(self):
self.client.get("/test_client_regress/staff_only/")
except SuspiciousOperation:
self.fail("Staff should be able to visit this page")
-
+
class TemplateExceptionTests(TestCase):
def setUp(self):
self.old_templates = settings.TEMPLATE_DIRS
settings.TEMPLATE_DIRS = ()
-
+
def tearDown(self):
settings.TEMPLATE_DIRS = self.old_templates
-
+
def test_no_404_template(self):
- "Missing templates are correctly reported by test client"
+ "Missing templates are correctly reported by test client"
try:
response = self.client.get("/no_such_view/")
self.fail("Should get error about missing template")
@@ -334,7 +334,7 @@ def test_bad_404_template(self):
self.fail("Should get error about syntax error in template")
except TemplateSyntaxError:
pass
-
+
# We need two different tests to check URLconf substitution - one to check
# it was changed, and another one (without self.urls) to check it was reverted on
# teardown. This pair of tests relies upon the alphabetical ordering of test execution.
@@ -382,4 +382,11 @@ def test_session(self):
response = self.client.get('/test_client_regress/check_session/')
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()
Please sign in to comment.
Something went wrong with that request. Please try again.