12
12
13
13
from django .urls import reverse_lazy
14
14
15
- from .factories import GroupFactory , UserFactory , UserObjectPermissionsFactory , ArticleFactory
15
+ from .factories import (
16
+ GroupFactory ,
17
+ UserFactory ,
18
+ UserObjectPermissionsFactory ,
19
+ ArticleFactory ,
20
+ )
16
21
from .helpers import TestViewHelper
17
22
from .views import (
18
23
PermissionRequiredView ,
@@ -68,9 +73,7 @@ def test_redirects_to_login(self):
68
73
user = self .build_unauthorized_user ()
69
74
self .client .login (username = user .username , password = "asdf1234" )
70
75
resp = self .client .get (self .view_url )
71
- self .assertRedirects (
72
- resp , "/accounts/login/?next={0}" .format (self .view_url )
73
- )
76
+ self .assertRedirects (resp , "/accounts/login/?next={0}" .format (self .view_url ))
74
77
75
78
def test_raise_permission_denied (self ):
76
79
"""
@@ -159,15 +162,11 @@ def test_custom_login_url(self):
159
162
user = self .build_unauthorized_user ()
160
163
req = self .build_request (user = user , path = self .view_url )
161
164
resp = self .dispatch_view (req , login_url = "/login/" )
162
- self .assertEqual (
163
- "/login/?next={0}" .format (self .view_url ), resp ["Location" ]
164
- )
165
+ self .assertEqual ("/login/?next={0}" .format (self .view_url ), resp ["Location" ])
165
166
166
167
# Test with reverse_lazy
167
168
resp = self .dispatch_view (req , login_url = reverse_lazy ("headline" ))
168
- self .assertEqual (
169
- "/headline/?next={0}" .format (self .view_url ), resp ["Location" ]
170
- )
169
+ self .assertEqual ("/headline/?next={0}" .format (self .view_url ), resp ["Location" ])
171
170
172
171
def test_custom_redirect_field_name (self ):
173
172
"""
@@ -186,9 +185,7 @@ def test_get_login_url_raises_exception(self):
186
185
ImproperlyConfigured.
187
186
"""
188
187
with self .assertRaises (ImproperlyConfigured ):
189
- self .dispatch_view (
190
- self .build_request (path = self .view_url ), login_url = None
191
- )
188
+ self .dispatch_view (self .build_request (path = self .view_url ), login_url = None )
192
189
193
190
def test_get_redirect_field_name_raises_exception (self ):
194
191
"""
@@ -210,9 +207,7 @@ def test_overridden_login_url(self):
210
207
user = self .build_unauthorized_user ()
211
208
self .client .login (username = user .username , password = "asdf1234" )
212
209
resp = self .client .get (self .view_url )
213
- self .assertRedirects (
214
- resp , "/auth/login/?next={0}" .format (self .view_url )
215
- )
210
+ self .assertRedirects (resp , "/auth/login/?next={0}" .format (self .view_url ))
216
211
217
212
def test_redirect_unauthenticated (self ):
218
213
resp = self .dispatch_view (
@@ -221,9 +216,7 @@ def test_redirect_unauthenticated(self):
221
216
redirect_unauthenticated_users = True ,
222
217
)
223
218
assert resp .status_code == 302
224
- assert resp ["Location" ] == "/accounts/login/?next={0}" .format (
225
- self .view_url
226
- )
219
+ assert resp ["Location" ] == "/accounts/login/?next={0}" .format (self .view_url )
227
220
228
221
def test_redirect_unauthenticated_false (self ):
229
222
with self .assertRaises (PermissionDenied ):
@@ -437,7 +430,7 @@ def test_object_level_permissions(self):
437
430
valid_req ,
438
431
permission_required = permissions ,
439
432
object_level_permissions = True ,
440
- raise_exception = True
433
+ raise_exception = True ,
441
434
)
442
435
invalid_req_1 = self .build_request (path = self .view_url , user = invalid_user_1 )
443
436
invalid_req_2 = self .build_request (path = self .view_url , user = invalid_user_2 )
@@ -448,22 +441,21 @@ def test_object_level_permissions(self):
448
441
invalid_req_1 ,
449
442
permission_required = permissions ,
450
443
object_level_permissions = True ,
451
- raise_exception = True
444
+ raise_exception = True ,
452
445
)
453
446
with self .assertRaises (PermissionDenied ):
454
447
self .dispatch_view (
455
448
invalid_req_2 ,
456
449
permission_required = permissions ,
457
450
object_level_permissions = True ,
458
- raise_exception = True
451
+ raise_exception = True ,
459
452
)
460
453
461
454
462
455
@pytest .mark .django_db
463
- class TestMultiplePermissionsRequiredMixin (
464
- _TestAccessBasicsMixin , test .TestCase
465
- ):
456
+ class TestMultiplePermissionsRequiredMixin (_TestAccessBasicsMixin , test .TestCase ):
466
457
"""Scenarios around requiring multiple permissions"""
458
+
467
459
view_class = MultiplePermissionsRequiredView
468
460
view_url = "/multiple_permissions_required/"
469
461
@@ -593,8 +585,12 @@ def test_all_object_level_permissions_key(self):
593
585
permissions = {"all" : ["auth.add_user" , "tests.add_article" ]}
594
586
valid_user = UserFactory (permissions = permissions ["all" ])
595
587
invalid_user = UserFactory (permissions = ["auth.add_user" ])
596
- UserObjectPermissionsFactory (user = valid_user , permission = auth_add_user , article_object = article )
597
- UserObjectPermissionsFactory (user = valid_user , permission = tests_add_article , article_object = article )
588
+ UserObjectPermissionsFactory (
589
+ user = valid_user , permission = auth_add_user , article_object = article
590
+ )
591
+ UserObjectPermissionsFactory (
592
+ user = valid_user , permission = tests_add_article , article_object = article
593
+ )
598
594
# Act
599
595
valid_req = self .build_request (path = self .view_url , user = valid_user )
600
596
valid_resp = self .dispatch_view (
@@ -605,7 +601,10 @@ def test_all_object_level_permissions_key(self):
605
601
self .assertEqual (valid_resp .status_code , 200 )
606
602
with self .assertRaises (PermissionDenied ):
607
603
self .dispatch_view (
608
- invalid_req , permissions = permissions , object_level_permissions = True , raise_exception = True
604
+ invalid_req ,
605
+ permissions = permissions ,
606
+ object_level_permissions = True ,
607
+ raise_exception = True ,
609
608
)
610
609
611
610
def test_any_object_level_permissions_key (self ):
@@ -623,29 +622,44 @@ def test_any_object_level_permissions_key(self):
623
622
user = UserFactory (permissions = [permissions ["any" ][0 ]])
624
623
user_1 = UserFactory ()
625
624
user_2 = UserFactory (permissions = permissions ["any" ])
626
- UserObjectPermissionsFactory (user = user , permission = auth_add_user , article_object = article )
627
- UserObjectPermissionsFactory (user = user , permission = tests_add_article , article_object = article )
625
+ UserObjectPermissionsFactory (
626
+ user = user , permission = auth_add_user , article_object = article
627
+ )
628
+ UserObjectPermissionsFactory (
629
+ user = user , permission = tests_add_article , article_object = article
630
+ )
628
631
# Act
629
632
valid_req = self .build_request (path = self .view_url , user = user )
630
633
valid_resp = self .dispatch_view (
631
- valid_req , permissions = permissions , object_level_permissions = True , raise_exception = True
634
+ valid_req ,
635
+ permissions = permissions ,
636
+ object_level_permissions = True ,
637
+ raise_exception = True ,
632
638
)
633
639
invalid_req_1 = self .build_request (path = self .view_url , user = user_1 )
634
640
invalid_req_2 = self .build_request (path = self .view_url , user = user_2 )
635
641
# Assert
636
642
self .assertEqual (valid_resp .status_code , 200 )
637
643
with self .assertRaises (PermissionDenied ):
638
644
self .dispatch_view (
639
- invalid_req_1 , permissions = permissions , object_level_permissions = True , raise_exception = True
645
+ invalid_req_1 ,
646
+ permissions = permissions ,
647
+ object_level_permissions = True ,
648
+ raise_exception = True ,
640
649
)
641
650
with self .assertRaises (PermissionDenied ):
642
- self .dispatch_view (invalid_req_2 , permissions = permissions , object_level_permissions = True , raise_exception = True )
643
-
651
+ self .dispatch_view (
652
+ invalid_req_2 ,
653
+ permissions = permissions ,
654
+ object_level_permissions = True ,
655
+ raise_exception = True ,
656
+ )
644
657
645
658
646
659
@pytest .mark .django_db
647
660
class TestSuperuserRequiredMixin (_TestAccessBasicsMixin , test .TestCase ):
648
661
"""Scenarios requiring a superuser"""
662
+
649
663
view_class = SuperuserRequiredView
650
664
view_url = "/superuser_required/"
651
665
@@ -661,6 +675,7 @@ def build_unauthorized_user(self):
661
675
@pytest .mark .django_db
662
676
class TestStaffuserRequiredMixin (_TestAccessBasicsMixin , test .TestCase ):
663
677
"""Scenarios requiring a staff user"""
678
+
664
679
view_class = StaffuserRequiredView
665
680
view_url = "/staffuser_required/"
666
681
@@ -763,6 +778,7 @@ def test_with_unicode(self):
763
778
@pytest .mark .django_db
764
779
class TestUserPassesTestMixin (_TestAccessBasicsMixin , test .TestCase ):
765
780
"""Scenarios requiring a user to pass a test"""
781
+
766
782
view_class = UserPassesTestView
767
783
view_url = "/user_passes_test/"
768
784
view_not_implemented_class = UserPassesTestNotImplementedView
@@ -816,6 +832,7 @@ def test_not_implemented(self):
816
832
@pytest .mark .django_db
817
833
class TestSSLRequiredMixin (test .TestCase ):
818
834
"""Scenarios around requiring SSL"""
835
+
819
836
view_class = SSLRequiredView
820
837
view_url = "/sslrequired/"
821
838
@@ -852,7 +869,7 @@ def test_https_does_not_redirect(self):
852
869
853
870
@pytest .mark .django_db
854
871
class TestRecentLoginRequiredMixin (test .TestCase ):
855
- """ Scenarios requiring a recent login"""
872
+ """Scenarios requiring a recent login"""
856
873
857
874
view_class = RecentLoginRequiredView
858
875
recent_view_url = "/recent_login/"
@@ -877,7 +894,10 @@ def test_outdated_login(self):
877
894
user = UserFactory (last_login = last_login )
878
895
self .client .login (username = user .username , password = "asdf1234" )
879
896
resp = self .client .get (self .outdated_view_url )
880
- assert resp .status_code in [302 , 405 ] # 302 is for Django < 5, while 405 is for Django >= 5
897
+ assert resp .status_code in [
898
+ 302 ,
899
+ 405 ,
900
+ ] # 302 is for Django < 5, while 405 is for Django >= 5
881
901
882
902
def test_not_logged_in (self ):
883
903
"""Anonymous requests should be handled appropriately"""
0 commit comments