From 1345ba183c35774e90db8682d927caddc8d863fe Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Thu, 2 May 2019 13:57:42 +0200 Subject: [PATCH] Fixed follow autoapproval not working with "instance" visibility level --- api/funkwhale_api/federation/tasks.py | 3 ++- api/tests/federation/test_tasks.py | 11 ++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/api/funkwhale_api/federation/tasks.py b/api/funkwhale_api/federation/tasks.py index 7a1c7d92b..f6471ef21 100644 --- a/api/funkwhale_api/federation/tasks.py +++ b/api/funkwhale_api/federation/tasks.py @@ -103,7 +103,8 @@ def dispatch_outbox(activity): inbox_items = activity.inbox_items.filter(is_read=False).select_related() if inbox_items.exists(): - dispatch_inbox.delay(activity_id=activity.pk, call_handlers=False) + call_handlers = activity.type in ["Follow"] + dispatch_inbox.delay(activity_id=activity.pk, call_handlers=call_handlers) if not preferences.get("federation__enabled"): # federation is disabled, we only deliver to local recipients diff --git a/api/tests/federation/test_tasks.py b/api/tests/federation/test_tasks.py index 98b4eff87..7c29d4698 100644 --- a/api/tests/federation/test_tasks.py +++ b/api/tests/federation/test_tasks.py @@ -87,16 +87,21 @@ def test_handle_in(factories, mocker, now, queryset_equal_list): ) -def test_dispatch_outbox(factories, mocker): +@pytest.mark.parametrize( + "type, call_handlers", [("Noop", False), ("Update", False), ("Follow", True)] +) +def test_dispatch_outbox(factories, mocker, type, call_handlers): mocked_inbox = mocker.patch("funkwhale_api.federation.tasks.dispatch_inbox.delay") mocked_deliver_to_remote = mocker.patch( "funkwhale_api.federation.tasks.deliver_to_remote.delay" ) - activity = factories["federation.Activity"](actor__local=True) + activity = factories["federation.Activity"](actor__local=True, type=type) factories["federation.InboxItem"](activity=activity) delivery = factories["federation.Delivery"](activity=activity) tasks.dispatch_outbox(activity_id=activity.pk) - mocked_inbox.assert_called_once_with(activity_id=activity.pk, call_handlers=False) + mocked_inbox.assert_called_once_with( + activity_id=activity.pk, call_handlers=call_handlers + ) mocked_deliver_to_remote.assert_called_once_with(delivery_id=delivery.pk)