123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- from django.contrib.auth import get_user_model
- from django.test import RequestFactory
- from django.urls import reverse
- from misago.categories.models import Category
- from misago.users.testutils import AuthenticatedUserTestCase
- from misago.threads import testutils
- from misago.threads.api.postendpoints.patch_post import patch_is_liked
- from misago.threads.models import Post
- from misago.threads.participants import (
- add_participant, change_owner, make_participants_aware, remove_participant, set_owner)
- UserModel = get_user_model()
- def get_mock_user():
- seed = UserModel.objects.count() + 1
- return UserModel.objects.create_user('bob%s' % seed, 'user%s@test.com' % seed, 'Pass.123')
- class AnonymizeEventsTests(AuthenticatedUserTestCase):
- def setUp(self):
- super().setUp()
- self.factory = RequestFactory()
- category = Category.objects.get(slug='first-category')
- self.thread = testutils.post_thread(category)
- def get_request(self, user=None):
- request = self.factory.get('/customer/details')
- request.user = user or self.user
- request.user_ip = '127.0.0.1'
- request.include_frontend_context = False
- request.frontend_context = {}
- return request
- def test_anonymize_changed_owner_event(self):
- """changed owner event is anonymized by user.anonymize_data"""
- user = get_mock_user()
- request = self.get_request()
- set_owner(self.thread, self.user)
- make_participants_aware(self.user, self.thread)
- change_owner(request, self.thread, user)
- user.anonymize_data()
- event = Post.objects.get(event_type='changed_owner')
- self.assertEqual(event.event_context, {
- 'user': {
- 'id': None,
- 'username': user.username,
- 'url': reverse('misago:index'),
- },
- })
- def test_anonymize_added_participant_event(self):
- """added participant event is anonymized by user.anonymize_data"""
- user = get_mock_user()
- request = self.get_request()
- set_owner(self.thread, self.user)
- make_participants_aware(self.user, self.thread)
- add_participant(request, self.thread, user)
- user.anonymize_data()
- event = Post.objects.get(event_type='added_participant')
- self.assertEqual(event.event_context, {
- 'user': {
- 'id': None,
- 'username': user.username,
- 'url': reverse('misago:index'),
- },
- })
- def test_anonymize_owner_left_event(self):
- """owner left event is anonymized by user.anonymize_data"""
- user = get_mock_user()
- request = self.get_request(user)
- set_owner(self.thread, user)
- make_participants_aware(user, self.thread)
- add_participant(request, self.thread, self.user)
- make_participants_aware(user, self.thread)
- remove_participant(request, self.thread, user)
- user.anonymize_data()
- event = Post.objects.get(event_type='owner_left')
- self.assertEqual(event.event_context, {
- 'user': {
- 'id': None,
- 'username': user.username,
- 'url': reverse('misago:index'),
- },
- })
- def test_anonymize_removed_owner_event(self):
- """removed owner event is anonymized by user.anonymize_data"""
- user = get_mock_user()
- request = self.get_request()
- set_owner(self.thread, user)
- make_participants_aware(user, self.thread)
- add_participant(request, self.thread, self.user)
-
- make_participants_aware(user, self.thread)
- remove_participant(request, self.thread, user)
- user.anonymize_data()
- event = Post.objects.get(event_type='removed_owner')
- self.assertEqual(event.event_context, {
- 'user': {
- 'id': None,
- 'username': user.username,
- 'url': reverse('misago:index'),
- },
- })
- def test_anonymize_participant_left_event(self):
- """participant left event is anonymized by user.anonymize_data"""
- user = get_mock_user()
- request = self.get_request(user)
- set_owner(self.thread, self.user)
- make_participants_aware(user, self.thread)
- add_participant(request, self.thread, user)
- make_participants_aware(user, self.thread)
- remove_participant(request, self.thread, user)
- user.anonymize_data()
- event = Post.objects.get(event_type='participant_left')
- self.assertEqual(event.event_context, {
- 'user': {
- 'id': None,
- 'username': user.username,
- 'url': reverse('misago:index'),
- },
- })
-
- def test_anonymize_removed_participant_event(self):
- """removed participant event is anonymized by user.anonymize_data"""
- user = get_mock_user()
- request = self.get_request()
- set_owner(self.thread, self.user)
- make_participants_aware(self.user, self.thread)
- add_participant(request, self.thread, user)
- make_participants_aware(self.user, self.thread)
- remove_participant(request, self.thread, user)
- user.anonymize_data()
- event = Post.objects.get(event_type='removed_participant')
- self.assertEqual(event.event_context, {
- 'user': {
- 'id': None,
- 'username': user.username,
- 'url': reverse('misago:index'),
- },
- })
- class AnonymizeLikesTests(AuthenticatedUserTestCase):
- def setUp(self):
- super().setUp()
- self.factory = RequestFactory()
- def get_request(self, user=None):
- request = self.factory.get('/customer/details')
- request.user = user or self.user
- request.user_ip = '127.0.0.1'
- return request
- def test_anonymize_user_likes(self):
- """post's last like is anonymized by user.anonymize_data"""
- category = Category.objects.get(slug='first-category')
- thread = testutils.post_thread(category)
- post = testutils.reply_thread(thread)
- post.acl = {'can_like': True}
- user = get_mock_user()
- patch_is_liked(self.get_request(self.user), post, 1)
- patch_is_liked(self.get_request(user), post, 1)
- user.anonymize_data()
- last_likes = Post.objects.get(pk=post.pk).last_likes
- self.assertEqual(last_likes, [
- {
- 'id': None,
- 'username': user.username,
- },
- {
- 'id': self.user.id,
- 'username': self.user.username,
- },
- ])
- class AnonymizePostsTests(AuthenticatedUserTestCase):
- def setUp(self):
- super().setUp()
- self.factory = RequestFactory()
- def get_request(self, user=None):
- request = self.factory.get('/customer/details')
- request.user = user or self.user
- request.user_ip = '127.0.0.1'
- return request
- def test_anonymize_user_posts(self):
- """post is anonymized by user.anonymize_data"""
- category = Category.objects.get(slug='first-category')
- thread = testutils.post_thread(category)
- user = get_mock_user()
- post = testutils.reply_thread(thread, poster=user)
- user.anonymize_data()
- anonymized_post = Post.objects.get(pk=post.pk)
- self.assertTrue(anonymized_post.is_valid)
|