test_getting_user_acl.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. from misago.acl.useracl import get_user_acl
  2. def test_getter_returns_authenticated_user_acl(cache_versions, user):
  3. acl = get_user_acl(user, cache_versions)
  4. assert acl
  5. assert acl["user_id"] == user.id
  6. assert acl["is_authenticated"] is True
  7. assert acl["is_anonymous"] is False
  8. def test_user_acl_includes_staff_and_superuser_false_status(cache_versions, user):
  9. acl = get_user_acl(user, cache_versions)
  10. assert acl
  11. assert acl["is_staff"] is False
  12. assert acl["is_superuser"] is False
  13. def test_user_acl_includes_cache_versions(cache_versions, user):
  14. acl = get_user_acl(user, cache_versions)
  15. assert acl
  16. assert acl["cache_versions"] == cache_versions
  17. def test_getter_returns_anonymous_user_acl(db, cache_versions, anonymous_user):
  18. acl = get_user_acl(anonymous_user, cache_versions)
  19. assert acl
  20. assert acl["user_id"] == anonymous_user.id
  21. assert acl["is_authenticated"] is False
  22. assert acl["is_anonymous"] is True
  23. def test_superuser_acl_includes_staff_and_superuser_true_status(
  24. cache_versions, superuser
  25. ):
  26. acl = get_user_acl(superuser, cache_versions)
  27. assert acl
  28. assert acl["is_staff"] is True
  29. assert acl["is_superuser"] is True
  30. def test_staffuser_acl_includes_staff_and_superuser_true_status(
  31. cache_versions, staffuser
  32. ):
  33. acl = get_user_acl(staffuser, cache_versions)
  34. assert acl
  35. assert acl["is_staff"] is True
  36. assert acl["is_superuser"] is False
  37. def test_getter_returns_acl_from_cache(mocker, db, cache_versions, anonymous_user):
  38. cache_get = mocker.patch("django.core.cache.cache.get", return_value=dict())
  39. get_user_acl(anonymous_user, cache_versions)
  40. cache_get.assert_called_once()
  41. def test_getter_builds_new_acl_when_cache_is_not_available(
  42. mocker, cache_versions, user
  43. ):
  44. mocker.patch("django.core.cache.cache.set")
  45. mocker.patch("misago.acl.buildacl.build_acl", return_value=dict())
  46. cache_get = mocker.patch("django.core.cache.cache.get", return_value=None)
  47. get_user_acl(user, cache_versions)
  48. cache_get.assert_called_once()
  49. def test_getter_sets_new_cache_if_no_cache_is_set(
  50. mocker, db, cache_versions, anonymous_user
  51. ):
  52. cache_set = mocker.patch("django.core.cache.cache.set")
  53. mocker.patch("misago.acl.buildacl.build_acl", return_value=dict())
  54. mocker.patch("django.core.cache.cache.get", return_value=None)
  55. get_user_acl(anonymous_user, cache_versions)
  56. cache_set.assert_called_once()
  57. def test_acl_cache_name_includes_cache_version(
  58. mocker, db, cache_versions, anonymous_user
  59. ):
  60. cache_set = mocker.patch("django.core.cache.cache.set")
  61. mocker.patch("misago.acl.buildacl.build_acl", return_value=dict())
  62. mocker.patch("django.core.cache.cache.get", return_value=None)
  63. get_user_acl(anonymous_user, cache_versions)
  64. cache_key = cache_set.call_args[0][0]
  65. assert cache_versions["acl"] in cache_key
  66. def test_getter_is_not_setting_new_cache_if_cache_is_set(
  67. mocker, cache_versions, anonymous_user
  68. ):
  69. cache_set = mocker.patch("django.core.cache.cache.set")
  70. mocker.patch("django.core.cache.cache.get", return_value=dict())
  71. get_user_acl(anonymous_user, cache_versions)
  72. cache_set.assert_not_called()