diff --git a/bookwyrm/tests/test_incoming_follow.py b/bookwyrm/tests/test_incoming_follow.py index a3ac3ebe..b5fbec00 100644 --- a/bookwyrm/tests/test_incoming_follow.py +++ b/bookwyrm/tests/test_incoming_follow.py @@ -44,4 +44,51 @@ class Follow(TestCase): follow = models.UserFollows.objects.get(user_object=self.local_user) self.assertEqual(follow.user_subject, self.remote_user) - # an Accept should be sent out + + def test_handle_follow_manually_approved(self): + activity = { + "@context": "https://www.w3.org/ns/activitystreams", + "id": "https://example.com/users/rat/follows/123", + "type": "Follow", + "actor": "https://example.com/users/rat", + "object": "http://local.com/user/mouse" + } + + self.local_user.manually_approves_followers = True + self.local_user.save() + + incoming.handle_follow(activity) + + # notification created + notification = models.Notification.objects.get() + self.assertEqual(notification.user, self.local_user) + self.assertEqual(notification.notification_type, 'FOLLOW_REQUEST') + + # the request should exist + request = models.UserFollowRequest.objects.get() + self.assertEqual(request.user_subject, self.remote_user) + self.assertEqual(request.user_object, self.local_user) + + # the follow relationship should not exist + follow = models.UserFollows.objects.all() + self.assertEqual(list(follow), []) + + + def test_nonexistent_user_follow(self): + activity = { + "@context": "https://www.w3.org/ns/activitystreams", + "id": "https://example.com/users/rat/follows/123", + "type": "Follow", + "actor": "https://example.com/users/rat", + "object": "http://local.com/user/nonexistent-user" + } + + incoming.handle_follow(activity) + + # do nothing + notifications = models.Notification.objects.all() + self.assertEqual(list(notifications), []) + requests = models.UserFollowRequest.objects.all() + self.assertEqual(list(requests), []) + follows = models.UserFollows.objects.all() + self.assertEqual(list(follows), [])