diff options
| author | Gary Wilson Jr <gary.wilson@gmail.com> | 2009-03-30 22:52:48 +0000 |
|---|---|---|
| committer | Gary Wilson Jr <gary.wilson@gmail.com> | 2009-03-30 22:52:48 +0000 |
| commit | 13ea4a913386d8374b6df82c49d4c3c895b926ba (patch) | |
| tree | 5eef325a8c4eaac2b3a684c820589b10ded9def1 | |
| parent | fea6c73538148a7362a9cdd85bbc4732ddb4204d (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.py | 6 | ||||
| -rw-r--r-- | tests/modeltests/test_client/models.py | 1 | ||||
| -rw-r--r-- | tests/regressiontests/test_client_regress/models.py | 8 |
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" |
