test_patching_user_acl.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. from .. import useracl
  2. from ..test import patch_user_acl
  3. def callable_acl_patch(user, user_acl):
  4. user_acl["patched_for_user_id"] = user.id
  5. @patch_user_acl({"is_patched": True})
  6. def test_decorator_patches_all_users_acls_in_test(cache_versions, user):
  7. user_acl = useracl.get_user_acl(user, cache_versions)
  8. assert user_acl["is_patched"]
  9. def test_decorator_removes_patches_after_test(cache_versions, user):
  10. @patch_user_acl({"is_patched": True})
  11. def test_function():
  12. user_acl = useracl.get_user_acl(user, cache_versions)
  13. assert user_acl["is_patched"]
  14. test_function()
  15. user_acl = useracl.get_user_acl(user, cache_versions)
  16. assert "is_patched" not in user_acl
  17. def test_context_manager_patches_all_users_acls_in_test(cache_versions, user):
  18. with patch_user_acl({"can_rename_users": "patched"}):
  19. user_acl = useracl.get_user_acl(user, cache_versions)
  20. assert user_acl["can_rename_users"] == "patched"
  21. def test_context_manager_removes_patches_after_exit(cache_versions, user):
  22. with patch_user_acl({"is_patched": True}):
  23. user_acl = useracl.get_user_acl(user, cache_versions)
  24. assert user_acl["is_patched"]
  25. user_acl = useracl.get_user_acl(user, cache_versions)
  26. assert "is_patched" not in user_acl
  27. @patch_user_acl(callable_acl_patch)
  28. def test_callable_patch_is_called_with_user_and_acl_by_decorator(cache_versions, user):
  29. user_acl = useracl.get_user_acl(user, cache_versions)
  30. assert user_acl["patched_for_user_id"] == user.id
  31. def test_callable_patch_is_called_with_user_and_acl_by_context_manager(
  32. cache_versions, user
  33. ):
  34. with patch_user_acl(callable_acl_patch):
  35. user_acl = useracl.get_user_acl(user, cache_versions)
  36. assert user_acl["patched_for_user_id"] == user.id
  37. @patch_user_acl({"acl_patch": 1})
  38. @patch_user_acl({"acl_patch": 2})
  39. def test_multiple_acl_patches_applied_by_decorator_stack(cache_versions, user):
  40. user_acl = useracl.get_user_acl(user, cache_versions)
  41. assert user_acl["acl_patch"] == 2
  42. def test_multiple_acl_patches_applied_by_context_manager_stack(cache_versions, user):
  43. with patch_user_acl({"acl_patch": 1}):
  44. with patch_user_acl({"acl_patch": 2}):
  45. user_acl = useracl.get_user_acl(user, cache_versions)
  46. assert user_acl["acl_patch"] == 2
  47. user_acl = useracl.get_user_acl(user, cache_versions)
  48. assert user_acl["acl_patch"] == 1
  49. user_acl = useracl.get_user_acl(user, cache_versions)
  50. assert "acl_patch" not in user_acl