mirror of
https://github.com/django/django.git
synced 2025-03-10 17:32:41 +00:00
Refs #35030 -- Added more tests for @user_passes_test decorator.
This commit is contained in:
parent
4426b1a72d
commit
c4df2a7776
@ -1,6 +1,10 @@
|
||||
from django.conf import settings
|
||||
from django.contrib.auth import models
|
||||
from django.contrib.auth.decorators import login_required, permission_required
|
||||
from django.contrib.auth.decorators import (
|
||||
login_required,
|
||||
permission_required,
|
||||
user_passes_test,
|
||||
)
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.http import HttpResponse
|
||||
from django.test import TestCase, override_settings
|
||||
@ -142,3 +146,37 @@ class PermissionsRequiredDecoratorTest(TestCase):
|
||||
request.user = self.user
|
||||
with self.assertRaises(PermissionDenied):
|
||||
a_view(request)
|
||||
|
||||
|
||||
class UserPassesTestDecoratorTest(TestCase):
|
||||
factory = RequestFactory()
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
cls.user_pass = models.User.objects.create(username="joe", password="qwerty")
|
||||
cls.user_deny = models.User.objects.create(username="jim", password="qwerty")
|
||||
models.Group.objects.create(name="Joe group")
|
||||
# Add permissions auth.add_customuser and auth.change_customuser
|
||||
perms = models.Permission.objects.filter(
|
||||
codename__in=("add_customuser", "change_customuser")
|
||||
)
|
||||
cls.user_pass.user_permissions.add(*perms)
|
||||
|
||||
def test_decorator(self):
|
||||
def sync_test_func(user):
|
||||
return bool(
|
||||
models.Group.objects.filter(name__istartswith=user.username).exists()
|
||||
)
|
||||
|
||||
@user_passes_test(sync_test_func)
|
||||
def sync_view(request):
|
||||
return HttpResponse()
|
||||
|
||||
request = self.factory.get("/rand")
|
||||
request.user = self.user_pass
|
||||
response = sync_view(request)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
request.user = self.user_deny
|
||||
response = sync_view(request)
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
Loading…
x
Reference in New Issue
Block a user