test_patching_user_acl.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. from django.contrib.auth import get_user_model
  2. from django.test import TestCase
  3. from misago.acl import useracl
  4. from misago.acl.test import patch_user_acl
  5. User = get_user_model()
  6. cache_versions = {"acl": "abcdefgh"}
  7. def callable_acl_patch(user, user_acl):
  8. user_acl["patched_for_user_id"] = user.id
  9. class PatchingUserACLInTestsTests(TestCase):
  10. @patch_user_acl()
  11. def test_decorator_adds_patching_function_to_test(self, patch_user_acl):
  12. assert patch_user_acl
  13. @patch_user_acl()
  14. def test_patching_function_changes_user_permission_value(self, patch_user_acl):
  15. user = User.objects.create_user("User", "user@example.com")
  16. patch_user_acl(user, {"can_rename_users": 123})
  17. user_acl = useracl.get_user_acl(user, cache_versions)
  18. assert user_acl["can_rename_users"] == 123
  19. @patch_user_acl()
  20. def test_patching_function_adds_user_permission(self, patch_user_acl):
  21. user = User.objects.create_user("User", "user@example.com")
  22. patch_user_acl(user, {"new_user_permission": 123})
  23. user_acl = useracl.get_user_acl(user, cache_versions)
  24. assert user_acl["new_user_permission"] == 123
  25. def test_acl_patches_are_removed_after_test(self):
  26. user = User.objects.create_user("User", "user@example.com")
  27. @patch_user_acl()
  28. def test_function(patch_user_acl):
  29. patch_user_acl(user, {"is_patched": True})
  30. user_acl = useracl.get_user_acl(user, cache_versions)
  31. assert user_acl["is_patched"]
  32. user_acl = useracl.get_user_acl(user, cache_versions)
  33. assert "is_patched" not in user_acl
  34. @patch_user_acl({"is_patched": True})
  35. def test_decorator_given_global_patch_patches_all_users_acls(self, _):
  36. user = User.objects.create_user("User", "user@example.com")
  37. user_acl = useracl.get_user_acl(user, cache_versions)
  38. assert user_acl["is_patched"]
  39. @patch_user_acl(callable_acl_patch)
  40. def test_callable_global_patch_is_called_with_user_and_user_acl(self, _):
  41. user = User.objects.create_user("User", "user@example.com")
  42. user_acl = useracl.get_user_acl(user, cache_versions)
  43. assert user_acl["patched_for_user_id"] == user.id
  44. @patch_user_acl({"is_patched": True})
  45. def test_patching_function_overrides_global_patch(self, patch_user_acl):
  46. user = User.objects.create_user("User", "user@example.com")
  47. patch_user_acl(user, {"is_patched": 123})
  48. user_acl = useracl.get_user_acl(user, cache_versions)
  49. assert user_acl["is_patched"] == 123
  50. @patch_user_acl()
  51. def test_callable_user_patch_is_called_with_user_and_user_acl(self, patch_user_acl):
  52. user = User.objects.create_user("User", "user@example.com")
  53. patch_user_acl(user, callable_acl_patch)
  54. user_acl = useracl.get_user_acl(user, cache_versions)
  55. assert user_acl["patched_for_user_id"] == user.id