Skip to content
Snippets Groups Projects
test_nodeinfo.py 3.27 KiB
Newer Older
import funkwhale_api
from funkwhale_api.instance import nodeinfo
Eliot Berriot's avatar
Eliot Berriot committed
from funkwhale_api.federation import actors


def test_nodeinfo_dump(preferences, mocker):
Eliot Berriot's avatar
Eliot Berriot committed
    preferences["instance__nodeinfo_stats_enabled"] = True
        "users": {"total": 1, "active_halfyear": 12, "active_month": 13},
Eliot Berriot's avatar
Eliot Berriot committed
        "tracks": 2,
        "albums": 3,
        "artists": 4,
        "track_favorites": 5,
        "music_duration": 6,
        "listenings": 7,
Eliot Berriot's avatar
Eliot Berriot committed
    mocker.patch("funkwhale_api.instance.stats.get", return_value=stats)
Eliot Berriot's avatar
Eliot Berriot committed
        "version": "2.0",
        "software": {"name": "funkwhale", "version": funkwhale_api.__version__},
        "protocols": ["activitypub"],
        "services": {"inbound": [], "outbound": []},
        "openRegistrations": preferences["users__registration_enabled"],
        "usage": {"users": {"total": 1, "activeHalfyear": 12, "activeMonth": 13}},
Eliot Berriot's avatar
Eliot Berriot committed
        "metadata": {
Eliot Berriot's avatar
Eliot Berriot committed
            "actorId": actors.get_service_actor().fid,
Eliot Berriot's avatar
Eliot Berriot committed
            "private": preferences["instance__nodeinfo_private"],
            "shortDescription": preferences["instance__short_description"],
            "longDescription": preferences["instance__long_description"],
            "nodeName": preferences["instance__name"],
            "library": {
                "federationEnabled": preferences["federation__enabled"],
                "federationNeedsApproval": preferences[
                    "federation__music_needs_approval"
                ],
                "anonymousCanListen": not preferences[
Eliot Berriot's avatar
Eliot Berriot committed
                    "common__api_authentication_required"
                ],
                "tracks": {"total": stats["tracks"]},
                "artists": {"total": stats["artists"]},
                "albums": {"total": stats["albums"]},
                "music": {"hours": stats["music_duration"]},
Eliot Berriot's avatar
Eliot Berriot committed
            "usage": {
                "favorites": {"tracks": {"total": stats["track_favorites"]}},
                "listenings": {"total": stats["listenings"]},
            },
        },
    }
    assert nodeinfo.get() == expected


def test_nodeinfo_dump_stats_disabled(preferences, mocker):
Eliot Berriot's avatar
Eliot Berriot committed
    preferences["instance__nodeinfo_stats_enabled"] = False
Eliot Berriot's avatar
Eliot Berriot committed
        "version": "2.0",
        "software": {"name": "funkwhale", "version": funkwhale_api.__version__},
        "protocols": ["activitypub"],
        "services": {"inbound": [], "outbound": []},
        "openRegistrations": preferences["users__registration_enabled"],
        "usage": {"users": {"total": 0, "activeHalfyear": 0, "activeMonth": 0}},
Eliot Berriot's avatar
Eliot Berriot committed
        "metadata": {
Eliot Berriot's avatar
Eliot Berriot committed
            "actorId": actors.get_service_actor().fid,
Eliot Berriot's avatar
Eliot Berriot committed
            "private": preferences["instance__nodeinfo_private"],
            "shortDescription": preferences["instance__short_description"],
            "longDescription": preferences["instance__long_description"],
            "nodeName": preferences["instance__name"],
            "library": {
                "federationEnabled": preferences["federation__enabled"],
                "federationNeedsApproval": preferences[
                    "federation__music_needs_approval"
                ],
                "anonymousCanListen": not preferences[
Eliot Berriot's avatar
Eliot Berriot committed
                    "common__api_authentication_required"
                ],
Eliot Berriot's avatar
Eliot Berriot committed
        },
    }
    assert nodeinfo.get() == expected