test_getting_user_acl.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. from unittest.mock import patch
  2. from django.contrib.auth import get_user_model
  3. from django.test import TestCase
  4. from misago.acl.useracl import get_user_acl
  5. from misago.users.models import AnonymousUser
  6. User = get_user_model()
  7. cache_versions = {"acl": "abcdefgh"}
  8. class GettingUserACLTests(TestCase):
  9. def test_getter_returns_authenticated_user_acl(self):
  10. user = User.objects.create_user('Bob', 'bob@bob.com')
  11. acl = get_user_acl(user, cache_versions)
  12. assert acl
  13. assert acl["user_id"] == user.id
  14. assert acl["is_authenticated"] is True
  15. assert acl["is_anonymous"] is False
  16. def test_user_acl_includes_staff_and_superuser_false_status(self):
  17. user = User.objects.create_user('Bob', 'bob@bob.com')
  18. acl = get_user_acl(user, cache_versions)
  19. assert acl
  20. assert acl["is_staff"] is False
  21. assert acl["is_superuser"] is False
  22. def test_user_acl_includes_cache_versions(self):
  23. user = User.objects.create_user('Bob', 'bob@bob.com')
  24. acl = get_user_acl(user, cache_versions)
  25. assert acl
  26. assert acl["cache_versions"] == cache_versions
  27. def test_getter_returns_anonymous_user_acl(self):
  28. user = AnonymousUser()
  29. acl = get_user_acl(user, cache_versions)
  30. assert acl
  31. assert acl["user_id"] == user.id
  32. assert acl["is_authenticated"] is False
  33. assert acl["is_anonymous"] is True
  34. def test_superuser_acl_includes_staff_and_superuser_true_status(self):
  35. user = User.objects.create_superuser('Bob', 'bob@bob.com', 'Pass.123')
  36. acl = get_user_acl(user, cache_versions)
  37. assert acl
  38. assert acl["is_staff"] is True
  39. assert acl["is_superuser"] is True
  40. @patch('django.core.cache.cache.get', return_value=dict())
  41. def test_getter_returns_acl_from_cache(self, cache_get):
  42. user = AnonymousUser()
  43. get_user_acl(user, cache_versions)
  44. cache_get.assert_called_once()
  45. @patch('django.core.cache.cache.set')
  46. @patch('misago.acl.buildacl.build_acl', return_value=dict())
  47. @patch('django.core.cache.cache.get', return_value=None)
  48. def test_getter_builds_new_acl_when_cache_is_not_available(self, cache_get, *_):
  49. user = AnonymousUser()
  50. get_user_acl(user, cache_versions)
  51. cache_get.assert_called_once()
  52. @patch('django.core.cache.cache.set')
  53. @patch('misago.acl.buildacl.build_acl', return_value=dict())
  54. @patch('django.core.cache.cache.get', return_value=None)
  55. def test_getter_sets_new_cache_if_no_cache_is_set(self, cache_set, *_):
  56. user = AnonymousUser()
  57. get_user_acl(user, cache_versions)
  58. cache_set.assert_called_once()
  59. @patch('django.core.cache.cache.set')
  60. @patch('misago.acl.buildacl.build_acl', return_value=dict())
  61. @patch('django.core.cache.cache.get', return_value=None)
  62. def test_acl_cache_name_includes_cache_verssion(self, cache_set, *_):
  63. user = AnonymousUser()
  64. get_user_acl(user, cache_versions)
  65. cache_key = cache_set.call_args[0][0]
  66. assert cache_versions["acl"] in cache_key
  67. @patch('django.core.cache.cache.set')
  68. @patch('django.core.cache.cache.get', return_value=dict())
  69. def test_getter_is_not_setting_new_cache_if_cache_is_set(self, _, cache_set):
  70. user = AnonymousUser()
  71. get_user_acl(user, cache_versions)
  72. cache_set.assert_not_called()