From e0adb3307b653519fe79e689008bc23e35928e69 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 30 Dec 2020 12:01:15 -0800 Subject: [PATCH] Gracefully handle unknown status types Fixes #432 --- bookwyrm/incoming.py | 8 ++++++-- bookwyrm/tests/test_incoming.py | 6 ++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/bookwyrm/incoming.py b/bookwyrm/incoming.py index ddf99f97..5e42fe45 100644 --- a/bookwyrm/incoming.py +++ b/bookwyrm/incoming.py @@ -185,11 +185,15 @@ def handle_create(activity): ''' someone did something, good on them ''' # deduplicate incoming activities activity = activity['object'] - status_id = activity['id'] + status_id = activity.get('id') if models.Status.objects.filter(remote_id=status_id).count(): return - serializer = activitypub.activity_objects[activity['type']] + try: + serializer = activitypub.activity_objects[activity['type']] + except KeyError: + return + activity = serializer(**activity) try: model = models.activity_models[activity.type] diff --git a/bookwyrm/tests/test_incoming.py b/bookwyrm/tests/test_incoming.py index 0269c64c..b8e3508e 100644 --- a/bookwyrm/tests/test_incoming.py +++ b/bookwyrm/tests/test_incoming.py @@ -272,6 +272,12 @@ class Incoming(TestCase): incoming.handle_create(activity) self.assertEqual(models.Status.objects.count(), 2) + def test_handle_create_unknown_type(self): + ''' folks send you all kinds of things ''' + activity = {'object': {'id': 'hi'}, 'type': 'Fish'} + result = incoming.handle_create(activity) + self.assertIsNone(result) + def test_handle_create_remote_note_with_mention(self): ''' should only create it under the right circumstances ''' self.assertEqual(models.Status.objects.count(), 1)