test.py 904 B

1234567891011121314151617181920212223242526272829303132333435
  1. from functools import wraps
  2. from unittest.mock import patch
  3. from .useracl import get_user_acl
  4. class PatchUserACL:
  5. def patch_user_acl(self, user, patch):
  6. self.patches[user.id] = patch
  7. def patched_get_user_acl(self, user, cache_versions):
  8. user_acl = get_user_acl(user, cache_versions)
  9. user_acl.update(self.patches.get(user.id, {}))
  10. return user_acl
  11. def __enter__(self):
  12. self.patches = {}
  13. def __exit__(self, *_):
  14. self.patches = {}
  15. def __call__(self, f):
  16. @wraps(f)
  17. def inner(*args, **kwargs):
  18. with self as context:
  19. with patch(
  20. "misago.acl.useracl.get_user_acl",
  21. side_effect=self.patched_get_user_acl,
  22. ):
  23. return f(*args, self.patch_user_acl, **kwargs)
  24. return inner
  25. patch_user_acl = PatchUserACL()