示例#1
0
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
示例#2
0
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
示例#3
0
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
示例#4
0
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
示例#5
0
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