test_anonymize_json_fields.py 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. from django.contrib.auth import get_user_model
  2. from django.test import RequestFactory
  3. from django.urls import reverse
  4. from misago.categories.models import Category
  5. from misago.conf import settings
  6. from misago.users.testutils import AuthenticatedUserTestCase
  7. from misago.threads import testutils
  8. from misago.threads.api.postendpoints.patch_post import patch_is_liked
  9. from misago.threads.models import Post
  10. from misago.threads.participants import (
  11. add_participant, change_owner, make_participants_aware, remove_participant, set_owner)
  12. UserModel = get_user_model()
  13. def get_mock_user():
  14. seed = UserModel.objects.count() + 1
  15. return UserModel.objects.create_user('bob%s' % seed, 'user%s@test.com' % seed, 'Pass.123')
  16. class AnonymizeEventsTests(AuthenticatedUserTestCase):
  17. def setUp(self):
  18. super(AnonymizeEventsTests, self).setUp()
  19. self.factory = RequestFactory()
  20. category = Category.objects.get(slug='first-category')
  21. self.thread = testutils.post_thread(category)
  22. def get_request(self, user=None):
  23. request = self.factory.get('/customer/details')
  24. request.user = user or self.user
  25. request.user_ip = '127.0.0.1'
  26. request.include_frontend_context = False
  27. request.frontend_context = {}
  28. return request
  29. def test_anonymize_changed_owner_event(self):
  30. """changed owner event is anonymized by user.anonymize_content"""
  31. user = get_mock_user()
  32. request = self.get_request()
  33. set_owner(self.thread, self.user)
  34. make_participants_aware(self.user, self.thread)
  35. change_owner(request, self.thread, user)
  36. user.anonymize_content()
  37. event = Post.objects.get(event_type='changed_owner')
  38. self.assertEqual(event.event_context, {
  39. 'user': {
  40. 'id': None,
  41. 'username': user.username,
  42. 'url': reverse('misago:users'),
  43. },
  44. })
  45. def test_anonymize_added_participant_event(self):
  46. """added participant event is anonymized by user.anonymize_content"""
  47. user = get_mock_user()
  48. request = self.get_request()
  49. set_owner(self.thread, self.user)
  50. make_participants_aware(self.user, self.thread)
  51. add_participant(request, self.thread, user)
  52. user.anonymize_content()
  53. event = Post.objects.get(event_type='added_participant')
  54. self.assertEqual(event.event_context, {
  55. 'user': {
  56. 'id': None,
  57. 'username': user.username,
  58. 'url': reverse('misago:users'),
  59. },
  60. })
  61. def test_anonymize_owner_left_event(self):
  62. """owner left event is anonymized by user.anonymize_content"""
  63. user = get_mock_user()
  64. request = self.get_request(user)
  65. set_owner(self.thread, user)
  66. make_participants_aware(user, self.thread)
  67. add_participant(request, self.thread, self.user)
  68. make_participants_aware(user, self.thread)
  69. remove_participant(request, self.thread, user)
  70. user.anonymize_content()
  71. event = Post.objects.get(event_type='owner_left')
  72. self.assertEqual(event.event_context, {
  73. 'user': {
  74. 'id': None,
  75. 'username': user.username,
  76. 'url': reverse('misago:users'),
  77. },
  78. })
  79. def test_anonymize_removed_owner_event(self):
  80. """removed owner event is anonymized by user.anonymize_content"""
  81. user = get_mock_user()
  82. request = self.get_request()
  83. set_owner(self.thread, user)
  84. make_participants_aware(user, self.thread)
  85. add_participant(request, self.thread, self.user)
  86. make_participants_aware(user, self.thread)
  87. remove_participant(request, self.thread, user)
  88. user.anonymize_content()
  89. event = Post.objects.get(event_type='removed_owner')
  90. self.assertEqual(event.event_context, {
  91. 'user': {
  92. 'id': None,
  93. 'username': user.username,
  94. 'url': reverse('misago:users'),
  95. },
  96. })
  97. def test_anonymize_participant_left_event(self):
  98. """participant left event is anonymized by user.anonymize_content"""
  99. user = get_mock_user()
  100. request = self.get_request(user)
  101. set_owner(self.thread, self.user)
  102. make_participants_aware(user, self.thread)
  103. add_participant(request, self.thread, user)
  104. make_participants_aware(user, self.thread)
  105. remove_participant(request, self.thread, user)
  106. user.anonymize_content()
  107. event = Post.objects.get(event_type='participant_left')
  108. self.assertEqual(event.event_context, {
  109. 'user': {
  110. 'id': None,
  111. 'username': user.username,
  112. 'url': reverse('misago:users'),
  113. },
  114. })
  115. def test_anonymize_removed_participant_event(self):
  116. """removed participant event is anonymized by user.anonymize_content"""
  117. user = get_mock_user()
  118. request = self.get_request()
  119. set_owner(self.thread, self.user)
  120. make_participants_aware(self.user, self.thread)
  121. add_participant(request, self.thread, user)
  122. make_participants_aware(self.user, self.thread)
  123. remove_participant(request, self.thread, user)
  124. user.anonymize_content()
  125. event = Post.objects.get(event_type='removed_participant')
  126. self.assertEqual(event.event_context, {
  127. 'user': {
  128. 'id': None,
  129. 'username': user.username,
  130. 'url': reverse('misago:users'),
  131. },
  132. })
  133. class AnonymizeLikesTests(AuthenticatedUserTestCase):
  134. def setUp(self):
  135. super(AnonymizeLikesTests, self).setUp()
  136. self.factory = RequestFactory()
  137. def get_request(self, user=None):
  138. request = self.factory.get('/customer/details')
  139. request.user = user or self.user
  140. request.user_ip = '127.0.0.1'
  141. return request
  142. def test_anonymize_user_likes(self):
  143. """post's last like is anonymized by user.anonymize_content"""
  144. category = Category.objects.get(slug='first-category')
  145. thread = testutils.post_thread(category)
  146. post = testutils.reply_thread(thread)
  147. post.acl = {'can_like': True}
  148. user = get_mock_user()
  149. patch_is_liked(self.get_request(self.user), post, 1)
  150. patch_is_liked(self.get_request(user), post, 1)
  151. user.anonymize_content()
  152. last_likes = Post.objects.get(pk=post.pk).last_likes
  153. self.assertEqual(last_likes, [
  154. {
  155. 'id': None,
  156. 'username': user.username,
  157. },
  158. {
  159. 'id': self.user.id,
  160. 'username': self.user.username,
  161. },
  162. ])