aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_request.py
diff options
context:
space:
mode:
authorTom Christie2015-02-09 17:56:25 +0000
committerTom Christie2015-02-09 17:56:25 +0000
commit873fb69395de6fd230e4aba1b707c1f1979c0f07 (patch)
tree3ba0bdc1bbb21fcb7e36c37cd6170112c94a7054 /tests/test_request.py
parent235b98e427e2bae2b52fb386a42c8045724de251 (diff)
parent1a087c8c5bac6f157979ef9ff540c0eb23848fb4 (diff)
downloaddjango-rest-framework-873fb69395de6fd230e4aba1b707c1f1979c0f07.tar.bz2
Merge pull request #2530 from tomchristie/attribute-proxying-fix
Fix misleading `AttributeError` tracebacks on `Request` objects.
Diffstat (limited to 'tests/test_request.py')
-rw-r--r--tests/test_request.py22
1 files changed, 21 insertions, 1 deletions
diff --git a/tests/test_request.py b/tests/test_request.py
index 02a9b1e2..c274ab69 100644
--- a/tests/test_request.py
+++ b/tests/test_request.py
@@ -249,9 +249,29 @@ class TestUserSetter(TestCase):
login(self.request, self.user)
self.assertEqual(self.wrapped_request.user, self.user)
+ def test_calling_user_fails_when_attribute_error_is_raised(self):
+ """
+ This proves that when an AttributeError is raised inside of the request.user
+ property, that we can handle this and report the true, underlying error.
+ """
+ class AuthRaisesAttributeError(object):
+ def authenticate(self, request):
+ import rest_framework
+ rest_framework.MISSPELLED_NAME_THAT_DOESNT_EXIST
-class TestAuthSetter(TestCase):
+ self.request = Request(factory.get('/'), authenticators=(AuthRaisesAttributeError(),))
+ SessionMiddleware().process_request(self.request)
+ login(self.request, self.user)
+ try:
+ self.request.user
+ except AttributeError as error:
+ self.assertEqual(str(error), "'module' object has no attribute 'MISSPELLED_NAME_THAT_DOESNT_EXIST'")
+ else:
+ assert False, 'AttributeError not raised'
+
+
+class TestAuthSetter(TestCase):
def test_auth_can_be_set(self):
request = Request(factory.get('/'))
request.auth = 'DUMMY'