Skip to content
Snippets Groups Projects
Forked from funkwhale / funkwhale
7511 commits behind the upstream repository.
test_permissions.py 1.34 KiB
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