aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2014-12-12 13:13:08 +0000
committerTom Christie2014-12-12 13:13:08 +0000
commit78312d44d1e1a7f43daacd1614be2008eb77a0de (patch)
treeb8f9b68fbbf36ae5aad05e9e2ef60b2da22554b5
parent903fb5ff96615064bf33cfb1dc9882fffe90f5c4 (diff)
downloaddjango-rest-framework-78312d44d1e1a7f43daacd1614be2008eb77a0de.tar.bz2
Client.logout() also clears any force_authenticate
-rw-r--r--rest_framework/test.py5
-rw-r--r--tests/test_testing.py14
2 files changed, 18 insertions, 1 deletions
diff --git a/rest_framework/test.py b/rest_framework/test.py
index 74d2c868..4f4b7c20 100644
--- a/rest_framework/test.py
+++ b/rest_framework/test.py
@@ -204,6 +204,11 @@ class APIClient(APIRequestFactory, DjangoClient):
def logout(self):
self._credentials = {}
+
+ # Also clear any `force_authenticate`
+ self.handler._force_user = None
+ self.handler._force_token = None
+
return super(APIClient, self).logout()
diff --git a/tests/test_testing.py b/tests/test_testing.py
index 9fd5966e..f5d2cbcd 100644
--- a/tests/test_testing.py
+++ b/tests/test_testing.py
@@ -109,7 +109,7 @@ class TestAPITestClient(TestCase):
def test_can_logout(self):
"""
- `logout()` reset stored credentials
+ `logout()` resets stored credentials
"""
self.client.credentials(HTTP_AUTHORIZATION='example')
response = self.client.get('/view/')
@@ -118,6 +118,18 @@ class TestAPITestClient(TestCase):
response = self.client.get('/view/')
self.assertEqual(response.data['auth'], b'')
+ def test_logout_resets_force_authenticate(self):
+ """
+ `logout()` resets any `force_authenticate`
+ """
+ user = User.objects.create_user('example', 'example@example.com', 'password')
+ self.client.force_authenticate(user)
+ response = self.client.get('/view/')
+ self.assertEqual(response.data['user'], 'example')
+ self.client.logout()
+ response = self.client.get('/view/')
+ self.assertEqual(response.data['user'], b'')
+
def test_follow_redirect(self):
"""
Follow redirect by setting follow argument.