Ejemplo n.º 1
0
def test_inbox_flag(factory_name, factory_kwargs, factories, mocker):
    report_created_send = mocker.patch(
        "funkwhale_api.moderation.signals.report_created.send")
    actor = factories["federation.Actor"]()
    target = factories[factory_name](**factory_kwargs)
    payload = {
        "type": "Flag",
        "object": [target.fid],
        "content": "Test report",
        "id": "https://" + actor.domain_id + "/testid",
        "actor": actor.fid,
    }
    serializer = serializers.ActivitySerializer(payload)

    result = routes.inbox_flag(serializer.data,
                               context={
                                   "actor": actor,
                                   "raise_exception": True
                               })

    report = actor.reports.latest("id")

    assert result == {"object": target, "related_object": report}
    assert report.fid == payload["id"]
    assert report.type == "other"
    assert report.target == target
    assert report.target_owner == moderation_serializers.get_target_owner(
        target)
    assert report.target_state == moderation_serializers.get_target_state(
        target)

    report_created_send.assert_called_once_with(sender=None, report=report)
Ejemplo n.º 2
0
def test_outbox_update_library(factories):
    library = factories["music.Library"]()
    activity = list(routes.outbox_update_library({"library": library}))[0]
    expected = serializers.ActivitySerializer({
        "type":
        "Update",
        "object":
        serializers.LibrarySerializer(library).data
    }).data

    expected["to"] = [{"type": "followers", "target": library}]

    assert dict(activity["payload"]) == dict(expected)
    assert activity["actor"] == library.actor
Ejemplo n.º 3
0
def test_outbox_update_track(factories):
    track = factories["music.Track"]()
    activity = list(routes.outbox_update_track({"track": track}))[0]
    expected = serializers.ActivitySerializer({
        "type":
        "Update",
        "object":
        serializers.TrackSerializer(track).data
    }).data

    expected["to"] = [contexts.AS.Public, {"type": "instances_with_followers"}]

    assert dict(activity["payload"]) == dict(expected)
    assert activity["actor"] == actors.get_service_actor()
Ejemplo n.º 4
0
def test_outbox_delete_audio(factories):
    upload = factories["music.Upload"]()
    activity = list(routes.outbox_delete_audio({"uploads": [upload]}))[0]
    expected = serializers.ActivitySerializer({
        "type": "Delete",
        "object": {
            "type": "Audio",
            "id": [upload.fid]
        }
    }).data

    expected["to"] = [{"type": "followers", "target": upload.library}]

    assert dict(activity["payload"]) == dict(expected)
    assert activity["actor"] == upload.library.actor
Ejemplo n.º 5
0
def test_inbox_delete_actor_doesnt_delete_local_actor(factories):
    local_actor = factories["users.User"]().create_actor()
    serializer = serializers.ActivitySerializer({
        "type": "Delete",
        "object": {
            "type": local_actor.type,
            "id": local_actor.fid
        }
    })
    routes.inbox_delete_actor(serializer.data,
                              context={
                                  "actor": local_actor,
                                  "raise_exception": True
                              })
    # actor should still be here!
    local_actor.refresh_from_db()
Ejemplo n.º 6
0
def test_inbox_delete_actor_only_works_on_self(factories):
    remote_actor1 = factories["federation.Actor"]()
    remote_actor2 = factories["federation.Actor"]()
    serializer = serializers.ActivitySerializer({
        "type": "Delete",
        "object": {
            "type": remote_actor2.type,
            "id": remote_actor2.fid
        },
    })
    routes.inbox_delete_actor(serializer.data,
                              context={
                                  "actor": remote_actor1,
                                  "raise_exception": True
                              })
    remote_actor2.refresh_from_db()
Ejemplo n.º 7
0
def test_inbox_delete_actor(factories):
    remote_actor = factories["federation.Actor"]()
    serializer = serializers.ActivitySerializer({
        "type": "Delete",
        "object": {
            "type": remote_actor.type,
            "id": remote_actor.fid
        },
    })
    routes.inbox_delete_actor(serializer.data,
                              context={
                                  "actor": remote_actor,
                                  "raise_exception": True
                              })
    with pytest.raises(remote_actor.__class__.DoesNotExist):
        remote_actor.refresh_from_db()
Ejemplo n.º 8
0
def test_outbox_delete_actor(factories):
    user = factories["users.User"]()
    actor = user.create_actor()

    activity = list(routes.outbox_delete_actor({"actor": actor}))[0]
    expected = serializers.ActivitySerializer({
        "type": "Delete",
        "object": {
            "id": actor.fid,
            "type": actor.type
        }
    }).data

    expected["to"] = [contexts.AS.Public, {"type": "instances_with_followers"}]

    assert dict(activity["payload"]) == dict(expected)
    assert activity["actor"] == actor
Ejemplo n.º 9
0
def test_outbox_create_audio(factories, mocker):
    upload = factories["music.Upload"]()
    activity = list(routes.outbox_create_audio({"upload": upload}))[0]
    serializer = serializers.ActivitySerializer({
        "type":
        "Create",
        "object":
        serializers.UploadSerializer(upload).data,
        "actor":
        upload.library.actor.fid,
    })
    expected = serializer.data
    expected["to"] = [{"type": "followers", "target": upload.library}]

    assert dict(activity["payload"]) == dict(expected)
    assert activity["actor"] == upload.library.actor
    assert activity["target"] == upload.library
    assert activity["object"] == upload
Ejemplo n.º 10
0
def test_outbox_delete_album(factories):
    album = factories["music.Album"](attributed=True)
    a = list(routes.outbox_delete_album({"album": album}))[0]
    expected = serializers.ActivitySerializer({
        "type": "Delete",
        "object": {
            "type": "Album",
            "id": album.fid
        }
    }).data

    expected["to"] = [
        activity.PUBLIC_ADDRESS, {
            "type": "instances_with_followers"
        }
    ]

    assert dict(a["payload"]) == dict(expected)
    assert a["actor"] == album.attributed_to
Ejemplo n.º 11
0
def test_outbox_delete_album_channel(factories):
    channel = factories["audio.Channel"]()
    album = factories["music.Album"](artist=channel.artist)
    a = list(routes.outbox_delete_album({"album": album}))[0]
    expected = serializers.ActivitySerializer({
        "type": "Delete",
        "object": {
            "type": "Album",
            "id": album.fid
        }
    }).data

    expected["to"] = [
        activity.PUBLIC_ADDRESS, {
            "type": "instances_with_followers"
        }
    ]

    assert dict(a["payload"]) == dict(expected)
    assert a["actor"] == channel.actor