diff --git a/api/funkwhale_api/federation/activity.py b/api/funkwhale_api/federation/activity.py index 4141da795d7bbdcd60308664004a6436450bd3d2..4e6e82369f0cc12b872a570955a7f8b6ab5af734 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 e195a758721a3e42e5fb5b9418f2217a6ecebf56..c69ac5d74aa390e8891cc0c5ed1a7d067c51bc24 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", [