2020-05-01 22:46:15 +08:00
|
|
|
from django.test import TestCase
|
2023-08-10 11:27:31 -04:00
|
|
|
|
2023-07-07 02:02:48 -04:00
|
|
|
from .models import *
|
2023-08-10 11:27:31 -04:00
|
|
|
from .models.user import Block, Follow, Mute
|
2020-05-01 22:46:15 +08:00
|
|
|
|
2023-07-07 02:02:48 -04:00
|
|
|
|
|
|
|
class UserTest(TestCase):
|
|
|
|
def setUp(self):
|
2023-08-10 11:27:31 -04:00
|
|
|
self.alice = User.register(mastodon_site="MySpace", mastodon_username="Alice")
|
|
|
|
self.bob = User.register(mastodon_site="KKCity", mastodon_username="Bob")
|
2023-07-07 02:02:48 -04:00
|
|
|
|
|
|
|
def test_local_follow(self):
|
2023-07-08 17:28:05 -04:00
|
|
|
self.assertTrue(self.alice.follow(self.bob))
|
2023-07-07 02:02:48 -04:00
|
|
|
self.assertTrue(
|
|
|
|
Follow.objects.filter(owner=self.alice, target=self.bob).exists()
|
|
|
|
)
|
2023-07-07 16:54:15 -04:00
|
|
|
self.assertEqual(self.alice.merged_following_ids(), [self.bob.pk])
|
2023-07-07 02:02:48 -04:00
|
|
|
self.assertEqual(self.alice.following, [self.bob.pk])
|
|
|
|
self.assertTrue(self.alice.is_following(self.bob))
|
|
|
|
self.assertTrue(self.bob.is_followed_by(self.alice))
|
|
|
|
|
2023-07-08 17:28:05 -04:00
|
|
|
self.assertFalse(self.alice.follow(self.bob))
|
2023-07-07 02:02:48 -04:00
|
|
|
self.assertEqual(
|
|
|
|
Follow.objects.filter(owner=self.alice, target=self.bob).count(), 1
|
|
|
|
)
|
|
|
|
self.assertEqual(self.alice.following, [self.bob.pk])
|
|
|
|
|
2023-07-08 17:28:05 -04:00
|
|
|
self.assertTrue(self.alice.unfollow(self.bob))
|
2023-07-07 02:02:48 -04:00
|
|
|
self.assertFalse(
|
|
|
|
Follow.objects.filter(owner=self.alice, target=self.bob).exists()
|
|
|
|
)
|
|
|
|
self.assertFalse(self.alice.is_following(self.bob))
|
|
|
|
self.assertFalse(self.bob.is_followed_by(self.alice))
|
|
|
|
self.assertEqual(self.alice.following, [])
|
2023-07-07 16:54:15 -04:00
|
|
|
|
2023-07-08 17:28:05 -04:00
|
|
|
def test_locked(self):
|
|
|
|
self.bob.mastodon_locked = True
|
|
|
|
self.bob.save()
|
|
|
|
self.assertFalse(self.alice.follow(self.bob))
|
|
|
|
self.bob.mastodon_locked = False
|
|
|
|
self.bob.save()
|
|
|
|
self.assertTrue(self.alice.follow(self.bob))
|
|
|
|
self.assertTrue(self.alice.is_following(self.bob))
|
|
|
|
self.bob.mastodon_locked = True
|
|
|
|
self.bob.save()
|
|
|
|
self.assertFalse(self.alice.is_following(self.bob))
|
|
|
|
|
2023-07-07 16:54:15 -04:00
|
|
|
def test_external_follow(self):
|
|
|
|
self.alice.mastodon_following.append(self.bob.mastodon_acct)
|
|
|
|
self.alice.merge_relationships()
|
|
|
|
self.alice.save()
|
|
|
|
self.assertTrue(self.alice.is_following(self.bob))
|
|
|
|
self.assertEqual(self.alice.following, [self.bob.pk])
|
|
|
|
self.assertFalse(self.alice.follow(self.bob))
|
|
|
|
|
|
|
|
self.alice.mastodon_following.remove(self.bob.mastodon_acct)
|
|
|
|
self.alice.merge_relationships()
|
|
|
|
self.alice.save()
|
|
|
|
self.assertFalse(self.alice.is_following(self.bob))
|
|
|
|
self.assertEqual(self.alice.following, [])
|
|
|
|
self.assertTrue(self.alice.follow(self.bob))
|
|
|
|
self.assertTrue(self.alice.is_following(self.bob))
|
|
|
|
|
|
|
|
def test_local_mute(self):
|
|
|
|
self.alice.mute(self.bob)
|
|
|
|
self.assertTrue(Mute.objects.filter(owner=self.alice, target=self.bob).exists())
|
|
|
|
self.assertEqual(self.alice.merged_muting_ids(), [self.bob.pk])
|
|
|
|
self.assertEqual(self.alice.ignoring, [self.bob.pk])
|
|
|
|
self.assertTrue(self.alice.is_muting(self.bob))
|
|
|
|
|
|
|
|
self.alice.mute(self.bob)
|
|
|
|
self.assertEqual(
|
|
|
|
Mute.objects.filter(owner=self.alice, target=self.bob).count(), 1
|
|
|
|
)
|
|
|
|
self.assertEqual(self.alice.ignoring, [self.bob.pk])
|
|
|
|
|
|
|
|
self.alice.unmute(self.bob)
|
|
|
|
self.assertFalse(
|
|
|
|
Mute.objects.filter(owner=self.alice, target=self.bob).exists()
|
|
|
|
)
|
|
|
|
self.assertFalse(self.alice.is_muting(self.bob))
|
|
|
|
self.assertEqual(self.alice.ignoring, [])
|
|
|
|
self.assertEqual(self.alice.merged_muting_ids(), [])
|
|
|
|
|
|
|
|
def test_external_mute(self):
|
|
|
|
self.alice.mastodon_mutes.append(self.bob.mastodon_acct)
|
|
|
|
self.alice.save()
|
|
|
|
self.assertTrue(self.alice.is_muting(self.bob))
|
|
|
|
self.assertEqual(self.alice.merged_muting_ids(), [self.bob.pk])
|
|
|
|
|
|
|
|
self.alice.mastodon_mutes.remove(self.bob.mastodon_acct)
|
|
|
|
self.assertFalse(self.alice.is_muting(self.bob))
|
|
|
|
self.assertEqual(self.alice.merged_muting_ids(), [])
|
|
|
|
|
|
|
|
def test_local_block_follow(self):
|
|
|
|
self.alice.block(self.bob)
|
|
|
|
self.assertEqual(self.bob.follow(self.alice), False)
|
|
|
|
self.alice.unblock(self.bob)
|
|
|
|
self.assertEqual(self.bob.follow(self.alice), True)
|
|
|
|
self.assertEqual(self.bob.following, [self.alice.pk])
|
|
|
|
self.alice.block(self.bob)
|
|
|
|
self.assertEqual(self.bob.following, [])
|
|
|
|
|
|
|
|
def test_local_block(self):
|
|
|
|
self.alice.block(self.bob)
|
|
|
|
self.assertTrue(
|
|
|
|
Block.objects.filter(owner=self.alice, target=self.bob).exists()
|
|
|
|
)
|
|
|
|
self.assertEqual(self.alice.merged_rejecting_ids(), [self.bob.pk])
|
|
|
|
self.assertEqual(self.alice.ignoring, [self.bob.pk])
|
|
|
|
self.assertTrue(self.alice.is_blocking(self.bob))
|
|
|
|
self.assertTrue(self.bob.is_blocked_by(self.alice))
|
|
|
|
|
|
|
|
self.alice.block(self.bob)
|
|
|
|
self.assertEqual(
|
|
|
|
Block.objects.filter(owner=self.alice, target=self.bob).count(), 1
|
|
|
|
)
|
|
|
|
self.assertEqual(self.alice.ignoring, [self.bob.pk])
|
|
|
|
|
|
|
|
self.alice.unblock(self.bob)
|
|
|
|
self.assertFalse(
|
|
|
|
Block.objects.filter(owner=self.alice, target=self.bob).exists()
|
|
|
|
)
|
|
|
|
self.assertFalse(self.alice.is_blocking(self.bob))
|
|
|
|
self.assertFalse(self.bob.is_blocked_by(self.alice))
|
|
|
|
self.assertEqual(self.alice.ignoring, [])
|
|
|
|
self.assertEqual(self.alice.merged_rejecting_ids(), [])
|
|
|
|
|
|
|
|
def test_external_block(self):
|
|
|
|
self.bob.follow(self.alice)
|
|
|
|
self.assertEqual(self.bob.following, [self.alice.pk])
|
|
|
|
self.alice.mastodon_blocks.append(self.bob.mastodon_acct)
|
|
|
|
self.alice.save()
|
|
|
|
self.assertTrue(self.alice.is_blocking(self.bob))
|
|
|
|
self.assertTrue(self.bob.is_blocked_by(self.alice))
|
|
|
|
self.assertEqual(self.alice.merged_rejecting_ids(), [self.bob.pk])
|
|
|
|
self.alice.merge_relationships()
|
|
|
|
self.assertEqual(self.alice.rejecting, [self.bob.pk])
|
|
|
|
self.alice.save()
|
|
|
|
self.assertEqual(self.bob.following, [self.alice.pk])
|
|
|
|
self.assertEqual(self.bob.rejecting, [])
|
|
|
|
self.assertEqual(User.merge_rejected_by(), 2)
|
|
|
|
self.bob.refresh_from_db()
|
|
|
|
self.assertEqual(self.bob.rejecting, [self.alice.pk])
|
|
|
|
self.assertEqual(self.bob.following, [])
|
|
|
|
|
|
|
|
self.alice.mastodon_blocks.remove(self.bob.mastodon_acct)
|
|
|
|
self.assertFalse(self.alice.is_blocking(self.bob))
|
|
|
|
self.assertFalse(self.bob.is_blocked_by(self.alice))
|
|
|
|
self.assertEqual(self.alice.merged_rejecting_ids(), [])
|
|
|
|
|
|
|
|
def test_external_domain_block(self):
|
|
|
|
self.alice.mastodon_domain_blocks.append(self.bob.mastodon_site)
|
|
|
|
self.alice.save()
|
|
|
|
self.assertTrue(self.alice.is_blocking(self.bob))
|
|
|
|
self.assertTrue(self.bob.is_blocked_by(self.alice))
|
|
|
|
self.assertEqual(self.alice.merged_rejecting_ids(), [self.bob.pk])
|
|
|
|
self.alice.merge_relationships()
|
|
|
|
self.assertEqual(self.alice.rejecting, [self.bob.pk])
|
|
|
|
self.alice.save()
|
|
|
|
self.assertEqual(User.merge_rejected_by(), 1)
|
|
|
|
self.bob.refresh_from_db()
|
|
|
|
self.assertEqual(self.bob.rejecting, [self.alice.pk])
|
|
|
|
|
|
|
|
self.alice.mastodon_domain_blocks.remove(self.bob.mastodon_site)
|
|
|
|
self.assertFalse(self.alice.is_blocking(self.bob))
|
|
|
|
self.assertFalse(self.bob.is_blocked_by(self.alice))
|
|
|
|
self.assertEqual(self.alice.merged_rejecting_ids(), [])
|