test_getting_user_acl.py 3.4 KB

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