Skip to content

Commit 1e9b5c1

Browse files
authored
Provide tests for hashing of OperandHolder (encode#9437)
1 parent c7a7eae commit 1e9b5c1

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

tests/test_permissions.py

+56
Original file line numberDiff line numberDiff line change
@@ -716,3 +716,59 @@ def has_object_permission(self, request, view, obj):
716716
composed_perm = (IsAuthenticatedUserOwner | permissions.IsAdminUser)
717717
hasperm = composed_perm().has_object_permission(request, None, None)
718718
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

Comments
 (0)