diff --git a/backend/courses/views.py b/backend/courses/views.py index d8504f7b..2afb39dd 100644 --- a/backend/courses/views.py +++ b/backend/courses/views.py @@ -520,8 +520,14 @@ def get_all_friendships(self): def post(self, request): sender = request.user + res = {} + + username = request.data.get("pennkey") + if not username: + res["message"] = "User not found" + return Response(res, status=status.HTTP_404_NOT_FOUND) - recipient = get_object_or_404(User, username=request.data.get("pennkey").lower()) + recipient = get_object_or_404(User, username = username.lower()) existing_friendship = ( self.get_all_friendships().filter(Q(recipient=recipient) | Q(sender=recipient)).first() @@ -555,9 +561,18 @@ def post(self, request): def delete(self, request): # either deletes a friendship or cancels/rejects a friendship request # (depends on who sends the request) - res = {} + sender = request.user - recipient = get_object_or_404(User, username=request.data.get("pennkey").lower()) + + res = {} + + username = request.data.get("pennkey") + if not username: + res["message"] = "User not found." + return Response(res, status=status.HTTP_404_NOT_FOUND) + + recipient = get_object_or_404(User, username = username.lower()) + existing_friendship = ( self.get_all_friendships().filter(Q(recipient=recipient) | Q(sender=recipient)).first() diff --git a/backend/tests/courses/test_friendship_models.py b/backend/tests/courses/test_friendship_models.py index 6c89c7d0..ad43b4ad 100644 --- a/backend/tests/courses/test_friendship_models.py +++ b/backend/tests/courses/test_friendship_models.py @@ -37,6 +37,39 @@ def test_basic_friendship(self): ) self.assertFalse(Friendship.objects.filter(sender=u2, recipient=u1).exists()) + def test_none_username(self): + u1 = self.u1 + u2 = self.u2 + + self.assertTrue(UserProfile.objects.filter(user=u2).exists()) + self.assertTrue(UserProfile.objects.filter(user=u1).exists()) + + make_friends = self.client1.post(reverse("friendship"), {"pennkey": ""}) + + self.assertEquals(make_friends.status_code, 404) + + def test_none_delete(self): + u1 = self.u1 + u2 = self.u2 + + self.assertTrue(UserProfile.objects.filter(user=u2).exists()) + self.assertTrue(UserProfile.objects.filter(user=u1).exists()) + + make_friends = self.client1.post(reverse("friendship"), {"pennkey": u2.username.upper()}) + self.assertEquals(make_friends.status_code, 201) + + delete_none = self.client1.delete(reverse("friendship"), {"pennkey": ""}) + self.assertEquals(delete_none.status_code, 404) + + delete_friends = self.client2.delete(reverse("friendship"), {"pennkey": u1.username}) + self.assertEquals(delete_friends.status_code, 200) + + + + + + + def test_basic_friendship_accept(self): u1 = self.u1 u2 = self.u2