163 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			163 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Python
		
	
	
	
| from collections import OrderedDict
 | |
| 
 | |
| from django.urls import reverse
 | |
| 
 | |
| from funkwhale_api import __version__ as api_version
 | |
| from funkwhale_api.music.utils import SUPPORTED_EXTENSIONS
 | |
| 
 | |
| 
 | |
| def test_nodeinfo_20(api_client):
 | |
|     url = reverse("api:v1:instance:nodeinfo-2.0")
 | |
|     response = api_client.get(url)
 | |
| 
 | |
|     expected = {
 | |
|         "version": "2.0",
 | |
|         "software": OrderedDict([("name", "funkwhale"), ("version", api_version)]),
 | |
|         "protocols": ["activitypub"],
 | |
|         "services": OrderedDict([("inbound", ["atom1.0"]), ("outbound", ["atom1.0"])]),
 | |
|         "openRegistrations": False,
 | |
|         "usage": {
 | |
|             "users": OrderedDict(
 | |
|                 [("total", 0), ("activeHalfyear", 0), ("activeMonth", 0)]
 | |
|             )
 | |
|         },
 | |
|         "metadata": {
 | |
|             "actorId": "https://test.federation/federation/actors/service",
 | |
|             "private": False,
 | |
|             "shortDescription": "",
 | |
|             "longDescription": "",
 | |
|             "rules": "",
 | |
|             "contactEmail": "",
 | |
|             "terms": "",
 | |
|             "nodeName": "",
 | |
|             "banner": None,
 | |
|             "defaultUploadQuota": 1000,
 | |
|             "library": {
 | |
|                 "federationEnabled": True,
 | |
|                 "anonymousCanListen": False,
 | |
|                 "tracks": OrderedDict([("total", 0)]),
 | |
|                 "artists": OrderedDict([("total", 0)]),
 | |
|                 "albums": OrderedDict([("total", 0)]),
 | |
|                 "music": OrderedDict([("hours", 0)]),
 | |
|             },
 | |
|             "supportedUploadExtensions": SUPPORTED_EXTENSIONS,
 | |
|             "allowList": {"enabled": False, "domains": None},
 | |
|             "reportTypes": [
 | |
|                 OrderedDict(
 | |
|                     [
 | |
|                         ("type", "takedown_request"),
 | |
|                         ("label", "Takedown request"),
 | |
|                         ("anonymous", True),
 | |
|                     ]
 | |
|                 ),
 | |
|                 OrderedDict(
 | |
|                     [
 | |
|                         ("type", "invalid_metadata"),
 | |
|                         ("label", "Invalid metadata"),
 | |
|                         ("anonymous", False),
 | |
|                     ]
 | |
|                 ),
 | |
|                 OrderedDict(
 | |
|                     [
 | |
|                         ("type", "illegal_content"),
 | |
|                         ("label", "Illegal content"),
 | |
|                         ("anonymous", True),
 | |
|                     ]
 | |
|                 ),
 | |
|                 OrderedDict(
 | |
|                     [
 | |
|                         ("type", "offensive_content"),
 | |
|                         ("label", "Offensive content"),
 | |
|                         ("anonymous", False),
 | |
|                     ]
 | |
|                 ),
 | |
|                 OrderedDict(
 | |
|                     [("type", "other"), ("label", "Other"), ("anonymous", False)]
 | |
|                 ),
 | |
|             ],
 | |
|             "funkwhaleSupportMessageEnabled": True,
 | |
|             "instanceSupportMessage": "",
 | |
|             "endpoints": OrderedDict(
 | |
|                 [("knownNodes", None), ("channels", None), ("libraries", None)]
 | |
|             ),
 | |
|             "usage": {
 | |
|                 "favorites": OrderedDict([("tracks", {"total": 0})]),
 | |
|                 "listenings": OrderedDict([("total", 0)]),
 | |
|                 "downloads": OrderedDict([("total", 0)]),
 | |
|             },
 | |
|         },
 | |
|     }
 | |
| 
 | |
|     assert response.data == expected
 | |
| 
 | |
| 
 | |
| def test_nodeinfo_21(api_client):
 | |
|     url = reverse("api:v2:instance:nodeinfo-2.1")
 | |
|     response = api_client.get(url)
 | |
| 
 | |
|     expected = {
 | |
|         "version": "2.1",
 | |
|         "software": OrderedDict(
 | |
|             [
 | |
|                 ("name", "funkwhale"),
 | |
|                 ("version", api_version),
 | |
|                 ("repository", "https://dev.funkwhale.audio/funkwhale/funkwhale"),
 | |
|                 ("homepage", "https://funkwhale.audio"),
 | |
|             ]
 | |
|         ),
 | |
|         "protocols": ["activitypub"],
 | |
|         "services": OrderedDict([("inbound", ["atom1.0"]), ("outbound", ["atom1.0"])]),
 | |
|         "openRegistrations": False,
 | |
|         "usage": {
 | |
|             "users": OrderedDict(
 | |
|                 [("total", 0), ("activeHalfyear", 0), ("activeMonth", 0)]
 | |
|             ),
 | |
|             "localPosts": 0,
 | |
|             "localComments": 0,
 | |
|         },
 | |
|         "metadata": {
 | |
|             "actorId": "https://test.federation/federation/actors/service",
 | |
|             "private": False,
 | |
|             "shortDescription": "",
 | |
|             "longDescription": "",
 | |
|             "contactEmail": "",
 | |
|             "nodeName": "",
 | |
|             "banner": None,
 | |
|             "defaultUploadQuota": 1000,
 | |
|             "supportedUploadExtensions": SUPPORTED_EXTENSIONS,
 | |
|             "allowList": {"enabled": False, "domains": None},
 | |
|             "funkwhaleSupportMessageEnabled": True,
 | |
|             "instanceSupportMessage": "",
 | |
|             "usage": OrderedDict(
 | |
|                 [
 | |
|                     ("favorites", OrderedDict([("tracks", {"total": 0})])),
 | |
|                     ("listenings", OrderedDict([("total", 0)])),
 | |
|                     ("downloads", OrderedDict([("total", 0)])),
 | |
|                 ]
 | |
|             ),
 | |
|             "location": "",
 | |
|             "languages": ["en"],
 | |
|             "features": ["channels", "podcasts", "federation"],
 | |
|             "content": OrderedDict(
 | |
|                 [
 | |
|                     (
 | |
|                         "local",
 | |
|                         OrderedDict(
 | |
|                             [
 | |
|                                 ("artists", 0),
 | |
|                                 ("releases", 0),
 | |
|                                 ("recordings", 0),
 | |
|                                 ("hoursOfContent", 0),
 | |
|                             ]
 | |
|                         ),
 | |
|                     ),
 | |
|                     ("topMusicCategories", []),
 | |
|                     ("topPodcastCategories", []),
 | |
|                 ]
 | |
|             ),
 | |
|             "codeOfConduct": "",
 | |
|         },
 | |
|     }
 | |
| 
 | |
|     assert response.data == expected
 |