Skip to content

Commit

Permalink
Added handling for edge cases
Browse files Browse the repository at this point in the history
  • Loading branch information
nruia-penn committed Oct 24, 2024
1 parent 2b50939 commit 8d00806
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 3 deletions.
21 changes: 18 additions & 3 deletions backend/courses/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -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()
Expand Down
33 changes: 33 additions & 0 deletions backend/tests/courses/test_friendship_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 8d00806

Please sign in to comment.