1
0
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:
Mariusz Felisiak 2024-03-06 13:28:32 +01:00 committed by GitHub
parent 4426b1a72d
commit c4df2a7776
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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)