kopia lustrzana https://dev.funkwhale.audio/funkwhale/funkwhale
				
				
				
			
		
			
				
	
	
		
			93 wiersze
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			93 wiersze
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
import pytest
 | 
						|
from rest_framework.views import APIView
 | 
						|
 | 
						|
from funkwhale_api.users import permissions
 | 
						|
 | 
						|
 | 
						|
def test_has_user_permission_no_user(api_request):
 | 
						|
    view = APIView.as_view()
 | 
						|
    permission = permissions.HasUserPermission()
 | 
						|
    request = api_request.get("/")
 | 
						|
    assert permission.has_permission(request, view) is False
 | 
						|
 | 
						|
 | 
						|
def test_has_user_permission_anonymous(anonymous_user, api_request):
 | 
						|
    view = APIView.as_view()
 | 
						|
    permission = permissions.HasUserPermission()
 | 
						|
    request = api_request.get("/")
 | 
						|
    setattr(request, "user", anonymous_user)
 | 
						|
    assert permission.has_permission(request, view) is False
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.parametrize("value", [True, False])
 | 
						|
def test_has_user_permission_logged_in_single(value, factories, api_request):
 | 
						|
    user = factories["users.User"](permission_moderation=value)
 | 
						|
 | 
						|
    class View(APIView):
 | 
						|
        required_permissions = ["moderation"]
 | 
						|
 | 
						|
    view = View()
 | 
						|
    permission = permissions.HasUserPermission()
 | 
						|
    request = api_request.get("/")
 | 
						|
    setattr(request, "user", user)
 | 
						|
    result = permission.has_permission(request, view)
 | 
						|
    assert result == user.has_permissions("moderation") == value
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.parametrize(
 | 
						|
    "moderation,library,expected",
 | 
						|
    [
 | 
						|
        (True, False, False),
 | 
						|
        (False, True, False),
 | 
						|
        (False, False, False),
 | 
						|
        (True, True, True),
 | 
						|
    ],
 | 
						|
)
 | 
						|
def test_has_user_permission_logged_in_multiple_and(
 | 
						|
    moderation, library, expected, factories, api_request
 | 
						|
):
 | 
						|
    user = factories["users.User"](
 | 
						|
        permission_moderation=moderation, permission_library=library
 | 
						|
    )
 | 
						|
 | 
						|
    class View(APIView):
 | 
						|
        required_permissions = ["moderation", "library"]
 | 
						|
        permission_operator = "and"
 | 
						|
 | 
						|
    view = View()
 | 
						|
    permission = permissions.HasUserPermission()
 | 
						|
    request = api_request.get("/")
 | 
						|
    setattr(request, "user", user)
 | 
						|
    result = permission.has_permission(request, view)
 | 
						|
    assert result == user.has_permissions("moderation", "library") == expected
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.parametrize(
 | 
						|
    "moderation,library,expected",
 | 
						|
    [
 | 
						|
        (True, False, True),
 | 
						|
        (False, True, True),
 | 
						|
        (False, False, False),
 | 
						|
        (True, True, True),
 | 
						|
    ],
 | 
						|
)
 | 
						|
def test_has_user_permission_logged_in_multiple_or(
 | 
						|
    moderation, library, expected, factories, api_request
 | 
						|
):
 | 
						|
    user = factories["users.User"](
 | 
						|
        permission_moderation=moderation, permission_library=library
 | 
						|
    )
 | 
						|
 | 
						|
    class View(APIView):
 | 
						|
        required_permissions = ["moderation", "library"]
 | 
						|
        permission_operator = "or"
 | 
						|
 | 
						|
    view = View()
 | 
						|
    permission = permissions.HasUserPermission()
 | 
						|
    request = api_request.get("/")
 | 
						|
    setattr(request, "user", user)
 | 
						|
    result = permission.has_permission(request, view)
 | 
						|
    has_permission_result = user.has_permissions("moderation", "library", operator="or")
 | 
						|
 | 
						|
    assert result == has_permission_result == expected
 |