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", [