funkwhale/api/tests/music/test_permissions.py

61 wiersze
2.2 KiB
Python

from rest_framework.views import APIView
from funkwhale_api.federation import actors
from funkwhale_api.music import permissions
def test_list_permission_no_protect(preferences, anonymous_user, api_request):
preferences["common__api_authentication_required"] = False
view = APIView.as_view()
permission = permissions.Listen()
request = api_request.get("/")
assert permission.has_permission(request, view) is True
def test_list_permission_protect_authenticated(factories, api_request, preferences):
preferences["common__api_authentication_required"] = True
user = factories["users.User"]()
view = APIView.as_view()
permission = permissions.Listen()
request = api_request.get("/")
setattr(request, "user", user)
assert permission.has_permission(request, view) is True
def test_list_permission_protect_not_following_actor(
factories, api_request, preferences
):
preferences["common__api_authentication_required"] = True
actor = factories["federation.Actor"]()
view = APIView.as_view()
permission = permissions.Listen()
request = api_request.get("/")
setattr(request, "actor", actor)
assert permission.has_permission(request, view) is False
def test_list_permission_protect_following_actor(factories, api_request, preferences):
preferences["common__api_authentication_required"] = True
library_actor = actors.SYSTEM_ACTORS["library"].get_actor_instance()
follow = factories["federation.Follow"](approved=True, target=library_actor)
view = APIView.as_view()
permission = permissions.Listen()
request = api_request.get("/")
setattr(request, "actor", follow.actor)
assert permission.has_permission(request, view) is True
def test_list_permission_protect_following_actor_not_approved(
factories, api_request, preferences
):
preferences["common__api_authentication_required"] = True
library_actor = actors.SYSTEM_ACTORS["library"].get_actor_instance()
follow = factories["federation.Follow"](approved=False, target=library_actor)
view = APIView.as_view()
permission = permissions.Listen()
request = api_request.get("/")
setattr(request, "actor", follow.actor)
assert permission.has_permission(request, view) is False