From 75c695b3c60e305bbd7b9fd58c1e70f592b1b83d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 16 Oct 2020 14:28:25 -0700 Subject: [PATCH] Updates and tests outgoing reject --- bookwyrm/incoming.py | 6 ++++-- bookwyrm/outgoing.py | 8 +++++--- bookwyrm/tests/outgoing/test_follow.py | 18 ++++++++++++++++++ bookwyrm/view_actions.py | 2 +- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/bookwyrm/incoming.py b/bookwyrm/incoming.py index 57ed0220c..bbce14c11 100644 --- a/bookwyrm/incoming.py +++ b/bookwyrm/incoming.py @@ -134,7 +134,9 @@ def handle_follow(activity): except django.db.utils.IntegrityError as err: if err.__cause__.diag.constraint_name != 'userfollowrequest_unique': raise - relationship = models.UserFollowRequest.objects.get(remote_id=activity['id']) + relationship = models.UserFollowRequest.objects.get( + remote_id=activity['id'] + ) # send the accept normally for a duplicate request if not to_follow.manually_approves_followers: @@ -194,7 +196,7 @@ def handle_follow_reject(activity): user_object=rejecter ) request.delete() - #raises models.UserFollowRequest.DoesNotExist: + #raises models.UserFollowRequest.DoesNotExist @app.task diff --git a/bookwyrm/outgoing.py b/bookwyrm/outgoing.py index 0a09a101b..8775712a8 100644 --- a/bookwyrm/outgoing.py +++ b/bookwyrm/outgoing.py @@ -93,10 +93,12 @@ def handle_accept(follow_request): broadcast(to_follow, activity, privacy='direct', direct_recipients=[user]) -def handle_reject(user, to_follow, relationship): +def handle_reject(follow_request): ''' a local user who managed follows rejects a follow request ''' - activity = relationship.to_reject_activity(user) - relationship.delete() + user = follow_request.user_subject + to_follow = follow_request.user_object + activity = follow_request.to_reject_activity() + follow_request.delete() broadcast(to_follow, activity, privacy='direct', direct_recipients=[user]) diff --git a/bookwyrm/tests/outgoing/test_follow.py b/bookwyrm/tests/outgoing/test_follow.py index 4ecf3a915..82a476f62 100644 --- a/bookwyrm/tests/outgoing/test_follow.py +++ b/bookwyrm/tests/outgoing/test_follow.py @@ -52,3 +52,21 @@ class Following(TestCase): ) # follow relationship should exist self.assertEqual(self.remote_user.followers.first(), self.local_user) + + + def test_handle_reject(self): + rel = models.UserFollowRequest.objects.create( + user_subject=self.local_user, + user_object=self.remote_user + ) + rel_id = rel.id + + outgoing.handle_reject(rel) + # request should be deleted + self.assertEqual( + models.UserFollowRequest.objects.filter(id=rel_id).count(), 0 + ) + # follow relationship should not exist + self.assertEqual( + models.UserFollows.objects.filter(id=rel_id).count(), 0 + ) diff --git a/bookwyrm/view_actions.py b/bookwyrm/view_actions.py index a4814ff01..b8436157c 100644 --- a/bookwyrm/view_actions.py +++ b/bookwyrm/view_actions.py @@ -495,7 +495,7 @@ def delete_follow_request(request): except models.UserFollowRequest.DoesNotExist: return HttpResponseBadRequest() - outgoing.handle_reject(requester, request.user, follow_request) + outgoing.handle_reject(follow_request) return redirect('/user/%s' % request.user.localname)