def test_nodeinfo_allow_list_enabled(preferences, factories, enabled, public, expected): preferences["moderation__allow_list_enabled"] = enabled preferences["moderation__allow_list_public"] = public factories["federation.Domain"](name="allowed.example", allowed=True) factories["federation.Domain"](allowed=False) factories["federation.Domain"](allowed=None) assert nodeinfo.get()["metadata"]["allowList"] == expected
def test_nodeinfo_dump_stats_disabled(preferences, mocker): preferences["instance__nodeinfo_stats_enabled"] = False expected = { "version": "2.0", "software": { "name": "funkwhale", "version": funkwhale_api.__version__ }, "protocols": ["activitypub"], "services": { "inbound": [], "outbound": [] }, "openRegistrations": preferences["users__registration_enabled"], "usage": { "users": { "total": 0 } }, "metadata": { "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": preferences["common__api_authentication_required"], }, }, } assert nodeinfo.get() == expected
def test_nodeinfo_dump_stats_disabled(preferences, mocker): preferences["instance__nodeinfo_stats_enabled"] = False preferences["moderation__unauthenticated_report_types"] = [ "takedown_request", "other", ] expected = { "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 } }, "metadata": { "actorId": actors.get_service_actor().fid, "private": preferences["instance__nodeinfo_private"], "shortDescription": preferences["instance__short_description"], "longDescription": preferences["instance__long_description"], "nodeName": preferences["instance__name"], "rules": preferences["instance__rules"], "contactEmail": preferences["instance__contact_email"], "defaultUploadQuota": preferences["users__upload_quota"], "terms": preferences["instance__terms"], "banner": None, "library": { "federationEnabled": preferences["federation__enabled"], "anonymousCanListen": not preferences["common__api_authentication_required"], }, "supportedUploadExtensions": music_utils.SUPPORTED_EXTENSIONS, "allowList": { "enabled": False, "domains": None }, "reportTypes": [ { "type": "takedown_request", "label": "Takedown request", "anonymous": True, }, { "type": "invalid_metadata", "label": "Invalid metadata", "anonymous": False, }, { "type": "illegal_content", "label": "Illegal content", "anonymous": False, }, { "type": "offensive_content", "label": "Offensive content", "anonymous": False, }, { "type": "other", "label": "Other", "anonymous": True }, ], "funkwhaleSupportMessageEnabled": preferences["instance__funkwhale_support_message_enabled"], "instanceSupportMessage": preferences["instance__support_message"], "knownNodesListUrl": None, }, } assert nodeinfo.get() == expected
def test_nodeinfo_dump(preferences, mocker, avatar): preferences["instance__banner"] = avatar preferences["instance__nodeinfo_stats_enabled"] = True preferences["common__api_authentication_required"] = False preferences["moderation__unauthenticated_report_types"] = [ "takedown_request", "other", "other_category_that_doesnt_exist", ] stats = { "users": { "total": 1, "active_halfyear": 12, "active_month": 13 }, "tracks": 2, "albums": 3, "artists": 4, "track_favorites": 5, "music_duration": 6, "listenings": 7, "downloads": 42, } mocker.patch("funkwhale_api.instance.stats.get", return_value=stats) expected = { "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 } }, "metadata": { "actorId": actors.get_service_actor().fid, "private": preferences["instance__nodeinfo_private"], "shortDescription": preferences["instance__short_description"], "longDescription": preferences["instance__long_description"], "nodeName": preferences["instance__name"], "rules": preferences["instance__rules"], "contactEmail": preferences["instance__contact_email"], "defaultUploadQuota": preferences["users__upload_quota"], "terms": preferences["instance__terms"], "banner": federation_utils.full_url(preferences["instance__banner"].url), "library": { "federationEnabled": preferences["federation__enabled"], "anonymousCanListen": not preferences["common__api_authentication_required"], "tracks": { "total": stats["tracks"] }, "artists": { "total": stats["artists"] }, "albums": { "total": stats["albums"] }, "music": { "hours": stats["music_duration"] }, }, "usage": { "favorites": { "tracks": { "total": stats["track_favorites"] } }, "listenings": { "total": stats["listenings"] }, "downloads": { "total": stats["downloads"] }, }, "supportedUploadExtensions": music_utils.SUPPORTED_EXTENSIONS, "allowList": { "enabled": False, "domains": None }, "reportTypes": [ { "type": "takedown_request", "label": "Takedown request", "anonymous": True, }, { "type": "invalid_metadata", "label": "Invalid metadata", "anonymous": False, }, { "type": "illegal_content", "label": "Illegal content", "anonymous": False, }, { "type": "offensive_content", "label": "Offensive content", "anonymous": False, }, { "type": "other", "label": "Other", "anonymous": True }, ], "funkwhaleSupportMessageEnabled": preferences["instance__funkwhale_support_message_enabled"], "instanceSupportMessage": preferences["instance__support_message"], "knownNodesListUrl": federation_utils.full_url( reverse("api:v1:federation:domains-list")), }, } assert nodeinfo.get() == expected
def test_nodeinfo_dump(preferences, mocker): preferences["instance__nodeinfo_stats_enabled"] = True stats = { "users": 1, "tracks": 2, "albums": 3, "artists": 4, "track_favorites": 5, "music_duration": 6, "listenings": 7, } mocker.patch("funkwhale_api.instance.stats.get", return_value=stats) expected = { "version": "2.0", "software": { "name": "funkwhale", "version": funkwhale_api.__version__ }, "protocols": ["activitypub"], "services": { "inbound": [], "outbound": [] }, "openRegistrations": preferences["users__registration_enabled"], "usage": { "users": { "total": stats["users"] } }, "metadata": { "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": preferences["common__api_authentication_required"], "tracks": { "total": stats["tracks"] }, "artists": { "total": stats["artists"] }, "albums": { "total": stats["albums"] }, "music": { "hours": stats["music_duration"] }, }, "usage": { "favorites": { "tracks": { "total": stats["track_favorites"] } }, "listenings": { "total": stats["listenings"] }, }, }, } assert nodeinfo.get() == expected