test_anonymize_data.py 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. from django.test import RequestFactory
  2. from django.urls import reverse
  3. from .. import test
  4. from ...cache.versions import get_cache_versions
  5. from ...categories.models import Category
  6. from ...conf.dynamicsettings import DynamicSettings
  7. from ...users.test import AuthenticatedUserTestCase, create_test_user
  8. from ..api.postendpoints.patch_post import patch_is_liked
  9. from ..models import Post
  10. from ..participants import (
  11. add_participant,
  12. change_owner,
  13. make_participants_aware,
  14. remove_participant,
  15. set_owner,
  16. )
  17. class AnonymizeEventsTests(AuthenticatedUserTestCase):
  18. def setUp(self):
  19. super().setUp()
  20. self.factory = RequestFactory()
  21. category = Category.objects.get(slug="first-category")
  22. self.thread = test.post_thread(category)
  23. def get_request(self, user=None):
  24. request = self.factory.get("/customer/details")
  25. request.user = user or self.user
  26. request.user_ip = "127.0.0.1"
  27. request.cache_versions = get_cache_versions()
  28. request.settings = DynamicSettings(request.cache_versions)
  29. request.include_frontend_context = False
  30. request.frontend_context = {}
  31. return request
  32. def test_anonymize_changed_owner_event(self):
  33. """changed owner event is anonymized by user.anonymize_data"""
  34. user = create_test_user("OtherUser", "otheruser@example.com")
  35. request = self.get_request()
  36. set_owner(self.thread, self.user)
  37. make_participants_aware(self.user, self.thread)
  38. change_owner(request, self.thread, user)
  39. user.anonymize_data()
  40. event = Post.objects.get(event_type="changed_owner")
  41. self.assertEqual(
  42. event.event_context,
  43. {
  44. "user": {
  45. "id": None,
  46. "username": user.username,
  47. "url": reverse("misago:index"),
  48. }
  49. },
  50. )
  51. def test_anonymize_added_participant_event(self):
  52. """added participant event is anonymized by user.anonymize_data"""
  53. user = create_test_user("OtherUser", "otheruser@example.com")
  54. request = self.get_request()
  55. set_owner(self.thread, self.user)
  56. make_participants_aware(self.user, self.thread)
  57. add_participant(request, self.thread, user)
  58. user.anonymize_data()
  59. event = Post.objects.get(event_type="added_participant")
  60. self.assertEqual(
  61. event.event_context,
  62. {
  63. "user": {
  64. "id": None,
  65. "username": user.username,
  66. "url": reverse("misago:index"),
  67. }
  68. },
  69. )
  70. def test_anonymize_owner_left_event(self):
  71. """owner left event is anonymized by user.anonymize_data"""
  72. user = create_test_user("OtherUser", "otheruser@example.com")
  73. request = self.get_request(user)
  74. set_owner(self.thread, user)
  75. make_participants_aware(user, self.thread)
  76. add_participant(request, self.thread, self.user)
  77. make_participants_aware(user, self.thread)
  78. remove_participant(request, self.thread, user)
  79. user.anonymize_data()
  80. event = Post.objects.get(event_type="owner_left")
  81. self.assertEqual(
  82. event.event_context,
  83. {
  84. "user": {
  85. "id": None,
  86. "username": user.username,
  87. "url": reverse("misago:index"),
  88. }
  89. },
  90. )
  91. def test_anonymize_removed_owner_event(self):
  92. """removed owner event is anonymized by user.anonymize_data"""
  93. user = create_test_user("OtherUser", "otheruser@example.com")
  94. request = self.get_request()
  95. set_owner(self.thread, user)
  96. make_participants_aware(user, self.thread)
  97. add_participant(request, self.thread, self.user)
  98. make_participants_aware(user, self.thread)
  99. remove_participant(request, self.thread, user)
  100. user.anonymize_data()
  101. event = Post.objects.get(event_type="removed_owner")
  102. self.assertEqual(
  103. event.event_context,
  104. {
  105. "user": {
  106. "id": None,
  107. "username": user.username,
  108. "url": reverse("misago:index"),
  109. }
  110. },
  111. )
  112. def test_anonymize_participant_left_event(self):
  113. """participant left event is anonymized by user.anonymize_data"""
  114. user = create_test_user("OtherUser", "otheruser@example.com")
  115. request = self.get_request(user)
  116. set_owner(self.thread, self.user)
  117. make_participants_aware(user, self.thread)
  118. add_participant(request, self.thread, user)
  119. make_participants_aware(user, self.thread)
  120. remove_participant(request, self.thread, user)
  121. user.anonymize_data()
  122. event = Post.objects.get(event_type="participant_left")
  123. self.assertEqual(
  124. event.event_context,
  125. {
  126. "user": {
  127. "id": None,
  128. "username": user.username,
  129. "url": reverse("misago:index"),
  130. }
  131. },
  132. )
  133. def test_anonymize_removed_participant_event(self):
  134. """removed participant event is anonymized by user.anonymize_data"""
  135. user = create_test_user("OtherUser", "otheruser@example.com")
  136. request = self.get_request()
  137. set_owner(self.thread, self.user)
  138. make_participants_aware(self.user, self.thread)
  139. add_participant(request, self.thread, user)
  140. make_participants_aware(self.user, self.thread)
  141. remove_participant(request, self.thread, user)
  142. user.anonymize_data()
  143. event = Post.objects.get(event_type="removed_participant")
  144. self.assertEqual(
  145. event.event_context,
  146. {
  147. "user": {
  148. "id": None,
  149. "username": user.username,
  150. "url": reverse("misago:index"),
  151. }
  152. },
  153. )
  154. class AnonymizeLikesTests(AuthenticatedUserTestCase):
  155. def setUp(self):
  156. super().setUp()
  157. self.factory = RequestFactory()
  158. def get_request(self, user=None):
  159. request = self.factory.get("/customer/details")
  160. request.user = user or self.user
  161. request.user_ip = "127.0.0.1"
  162. return request
  163. def test_anonymize_user_likes(self):
  164. """post's last like is anonymized by user.anonymize_data"""
  165. category = Category.objects.get(slug="first-category")
  166. thread = test.post_thread(category)
  167. post = test.reply_thread(thread)
  168. post.acl = {"can_like": True}
  169. user = create_test_user("OtherUser", "otheruser@example.com")
  170. patch_is_liked(self.get_request(self.user), post, 1)
  171. patch_is_liked(self.get_request(user), post, 1)
  172. user.anonymize_data()
  173. last_likes = Post.objects.get(pk=post.pk).last_likes
  174. self.assertEqual(
  175. last_likes,
  176. [
  177. {"id": None, "username": user.username},
  178. {"id": self.user.id, "username": self.user.username},
  179. ],
  180. )
  181. class AnonymizePostsTests(AuthenticatedUserTestCase):
  182. def setUp(self):
  183. super().setUp()
  184. self.factory = RequestFactory()
  185. def get_request(self, user=None):
  186. request = self.factory.get("/customer/details")
  187. request.user = user or self.user
  188. request.user_ip = "127.0.0.1"
  189. return request
  190. def test_anonymize_user_posts(self):
  191. """post is anonymized by user.anonymize_data"""
  192. category = Category.objects.get(slug="first-category")
  193. thread = test.post_thread(category)
  194. user = create_test_user("OtherUser", "otheruser@example.com")
  195. post = test.reply_thread(thread, poster=user)
  196. user.anonymize_data()
  197. anonymized_post = Post.objects.get(pk=post.pk)
  198. self.assertTrue(anonymized_post.is_valid)