|
@@ -80,6 +80,20 @@ class AccessMixinTests(TestCase):
|
|
|
with self.assertRaises(PermissionDenied):
|
|
|
view(request)
|
|
|
|
|
|
+ def test_access_mixin_permission_denied_response(self):
|
|
|
+ user = models.User.objects.create(username='joe', password='qwerty')
|
|
|
+ # Authenticated users receive PermissionDenied.
|
|
|
+ request = self.factory.get('/rand')
|
|
|
+ request.user = user
|
|
|
+ view = AlwaysFalseView.as_view()
|
|
|
+ with self.assertRaises(PermissionDenied):
|
|
|
+ view(request)
|
|
|
+ # Anonymous users are redirected to the login page.
|
|
|
+ request.user = AnonymousUser()
|
|
|
+ response = view(request)
|
|
|
+ self.assertEqual(response.status_code, 302)
|
|
|
+ self.assertEqual(response.url, '/accounts/login/?next=/rand')
|
|
|
+
|
|
|
@mock.patch.object(models.User, 'is_authenticated', False)
|
|
|
def test_stacked_mixins_not_logged_in(self):
|
|
|
user = models.User.objects.create(username='joe', password='qwerty')
|
|
@@ -241,8 +255,13 @@ class PermissionsRequiredMixinTests(TestCase):
|
|
|
'auth_tests.add_customuser', 'auth_tests.change_customuser', 'nonexistent-permission',
|
|
|
]
|
|
|
|
|
|
+ # Authenticated users receive PermissionDenied.
|
|
|
request = self.factory.get('/rand')
|
|
|
request.user = self.user
|
|
|
+ with self.assertRaises(PermissionDenied):
|
|
|
+ AView.as_view()(request)
|
|
|
+ # Anonymous users are redirected to the login page.
|
|
|
+ request.user = AnonymousUser()
|
|
|
resp = AView.as_view()(request)
|
|
|
self.assertEqual(resp.status_code, 302)
|
|
|
|