Skip to content
Snippets Groups Projects
test_permissions.py 1.34 KiB
Newer Older
  • Learn to ignore specific revisions
  • import pytest
    
    from rest_framework.views import APIView
    
    from django.http import Http404
    
    from funkwhale_api.common import permissions
    
    
    def test_owner_permission_owner_field_ok(nodb_factories, api_request):
        playlist = nodb_factories['playlists.Playlist']()
        view = APIView.as_view()
        permission = permissions.OwnerPermission()
        request = api_request.get('/')
        setattr(request, 'user', playlist.user)
        check = permission.has_object_permission(request, view, playlist)
    
        assert check is True
    
    
    
    def test_owner_permission_owner_field_not_ok(
            anonymous_user, nodb_factories, api_request):
    
        playlist = nodb_factories['playlists.Playlist']()
        view = APIView.as_view()
        permission = permissions.OwnerPermission()
        request = api_request.get('/')
    
        setattr(request, 'user', anonymous_user)
    
    
        with pytest.raises(Http404):
            permission.has_object_permission(request, view, playlist)
    
    
    
    def test_owner_permission_read_only(
            anonymous_user, nodb_factories, api_request):
    
        playlist = nodb_factories['playlists.Playlist']()
        view = APIView.as_view()
        setattr(view, 'owner_checks', ['write'])
        permission = permissions.OwnerPermission()
        request = api_request.get('/')
    
        setattr(request, 'user', anonymous_user)
    
        check = permission.has_object_permission(request, view, playlist)
    
        assert check is True