From f5a6a40d7f2f960b82e5a007dad3a9d2e9c2f547 Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Fri, 5 Apr 2019 16:22:32 +0200 Subject: [PATCH] Fix #787: federation issue due to missing error handling --- api/funkwhale_api/federation/activity.py | 2 +- api/tests/federation/test_activity.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/api/funkwhale_api/federation/activity.py b/api/funkwhale_api/federation/activity.py index 4141da795..4e6e82369 100644 --- a/api/funkwhale_api/federation/activity.py +++ b/api/funkwhale_api/federation/activity.py @@ -388,7 +388,7 @@ def recursive_getattr(obj, key, permissive=False): def match_route(route, payload): for key, value in route.items(): - payload_value = recursive_getattr(payload, key) + payload_value = recursive_getattr(payload, key, permissive=True) if payload_value != value: return False diff --git a/api/tests/federation/test_activity.py b/api/tests/federation/test_activity.py index e195a7587..c69ac5d74 100644 --- a/api/tests/federation/test_activity.py +++ b/api/tests/federation/test_activity.py @@ -91,6 +91,11 @@ def test_receive_skips_if_no_matching_route(factories, now, mocker): assert models.Activity.objects.count() == 0 +def test_match_route_ignore_payload_issues(): + payload = {"object": "http://hello"} + assert activity.match_route({"object.type": "Test"}, payload) is False + + @pytest.mark.parametrize( "params, policy_kwargs, expected", [