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.conf import settings
|
||||||
from django.contrib.auth import models
|
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.core.exceptions import PermissionDenied
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
from django.test import TestCase, override_settings
|
from django.test import TestCase, override_settings
|
||||||
@ -142,3 +146,37 @@ class PermissionsRequiredDecoratorTest(TestCase):
|
|||||||
request.user = self.user
|
request.user = self.user
|
||||||
with self.assertRaises(PermissionDenied):
|
with self.assertRaises(PermissionDenied):
|
||||||
a_view(request)
|
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