mirror of
https://code.eliotberriot.com/funkwhale/funkwhale.git
synced 2025-10-05 17:45:18 +02:00
Fix #858: Broadcast/handle rejected follows
This commit is contained in:
parent
191f28f79c
commit
cd109ddeb6
7 changed files with 120 additions and 13 deletions
|
@ -16,6 +16,7 @@ from funkwhale_api.moderation import serializers as moderation_serializers
|
|||
[
|
||||
({"type": "Follow"}, routes.inbox_follow),
|
||||
({"type": "Accept"}, routes.inbox_accept),
|
||||
({"type": "Reject"}, routes.inbox_reject_follow),
|
||||
({"type": "Create", "object": {"type": "Audio"}}, routes.inbox_create_audio),
|
||||
(
|
||||
{"type": "Update", "object": {"type": "Library"}},
|
||||
|
@ -51,6 +52,7 @@ def test_inbox_routes(route, handler):
|
|||
({"type": "Accept"}, routes.outbox_accept),
|
||||
({"type": "Flag"}, routes.outbox_flag),
|
||||
({"type": "Follow"}, routes.outbox_follow),
|
||||
({"type": "Reject"}, routes.outbox_reject_follow),
|
||||
({"type": "Create", "object": {"type": "Audio"}}, routes.outbox_create_audio),
|
||||
(
|
||||
{"type": "Update", "object": {"type": "Library"}},
|
||||
|
@ -669,6 +671,46 @@ def test_outbox_delete_follow_library(factories):
|
|||
assert activity["related_object"] == follow.target
|
||||
|
||||
|
||||
def test_inbox_reject_follow_library(factories):
|
||||
local_actor = factories["users.User"]().create_actor()
|
||||
remote_actor = factories["federation.Actor"]()
|
||||
follow = factories["federation.LibraryFollow"](
|
||||
actor=local_actor, target__actor=remote_actor, approved=True
|
||||
)
|
||||
assert follow.approved is True
|
||||
serializer = serializers.RejectFollowSerializer(
|
||||
follow, context={"actor": remote_actor}
|
||||
)
|
||||
ii = factories["federation.InboxItem"](actor=local_actor)
|
||||
routes.inbox_reject_follow(
|
||||
serializer.data,
|
||||
context={"actor": remote_actor, "inbox_items": [ii], "raise_exception": True},
|
||||
)
|
||||
follow.refresh_from_db()
|
||||
assert follow.approved is False
|
||||
|
||||
|
||||
def test_outbox_reject_follow_library(factories):
|
||||
remote_actor = factories["federation.Actor"]()
|
||||
local_actor = factories["federation.Actor"](local=True)
|
||||
follow = factories["federation.LibraryFollow"](
|
||||
actor=remote_actor, target__actor=local_actor
|
||||
)
|
||||
|
||||
activity = list(routes.outbox_reject_follow({"follow": follow}))[0]
|
||||
|
||||
serializer = serializers.RejectFollowSerializer(
|
||||
follow, context={"actor": local_actor}
|
||||
)
|
||||
expected = serializer.data
|
||||
expected["to"] = [remote_actor]
|
||||
|
||||
assert activity["payload"] == expected
|
||||
assert activity["actor"] == local_actor
|
||||
assert activity["object"] == follow
|
||||
assert activity["related_object"] == follow.target
|
||||
|
||||
|
||||
def test_handle_library_entry_update_can_manage(factories, mocker):
|
||||
update_library_entity = mocker.patch(
|
||||
"funkwhale_api.music.tasks.update_library_entity"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue