@@ -716,3 +716,59 @@ def has_object_permission(self, request, view, obj):
716
716
composed_perm = (IsAuthenticatedUserOwner | permissions .IsAdminUser )
717
717
hasperm = composed_perm ().has_object_permission (request , None , None )
718
718
assert hasperm is False
719
+
720
+ def test_operand_holder_is_hashable (self ):
721
+ assert hash ((permissions .IsAuthenticated & permissions .IsAdminUser ))
722
+
723
+ def test_operand_holder_hash_same_for_same_operands_and_operator (self ):
724
+ first_operand_holder = (
725
+ permissions .IsAuthenticated & permissions .IsAdminUser
726
+ )
727
+ second_operand_holder = (
728
+ permissions .IsAuthenticated & permissions .IsAdminUser
729
+ )
730
+
731
+ assert hash (first_operand_holder ) == hash (second_operand_holder )
732
+
733
+ def test_operand_holder_hash_differs_for_different_operands (self ):
734
+ first_operand_holder = (
735
+ permissions .IsAuthenticated & permissions .IsAdminUser
736
+ )
737
+ second_operand_holder = (
738
+ permissions .AllowAny & permissions .IsAdminUser
739
+ )
740
+ third_operand_holder = (
741
+ permissions .IsAuthenticated & permissions .AllowAny
742
+ )
743
+
744
+ assert hash (first_operand_holder ) != hash (second_operand_holder )
745
+ assert hash (first_operand_holder ) != hash (third_operand_holder )
746
+ assert hash (second_operand_holder ) != hash (third_operand_holder )
747
+
748
+ def test_operand_holder_hash_differs_for_different_operators (self ):
749
+ first_operand_holder = (
750
+ permissions .IsAuthenticated & permissions .IsAdminUser
751
+ )
752
+ second_operand_holder = (
753
+ permissions .IsAuthenticated | permissions .IsAdminUser
754
+ )
755
+
756
+ assert hash (first_operand_holder ) != hash (second_operand_holder )
757
+
758
+ def test_filtering_permissions (self ):
759
+ unfiltered_permissions = [
760
+ permissions .IsAuthenticated & permissions .IsAdminUser ,
761
+ permissions .IsAuthenticated & permissions .IsAdminUser ,
762
+ permissions .AllowAny ,
763
+ ]
764
+ expected_permissions = [
765
+ permissions .IsAuthenticated & permissions .IsAdminUser ,
766
+ permissions .AllowAny ,
767
+ ]
768
+
769
+ filtered_permissions = [
770
+ perm for perm
771
+ in dict .fromkeys (unfiltered_permissions )
772
+ ]
773
+
774
+ assert filtered_permissions == expected_permissions
0 commit comments