aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_permissions.py
diff options
context:
space:
mode:
authorCarlton Gibson2014-11-18 16:42:39 +0100
committerCarlton Gibson2014-11-18 16:42:39 +0100
commitc50a42bddc66e28d624cd3caadd2d63502ac2e6e (patch)
treebf03e2dcb23c2e4f372ff00cba4a810a96c24681 /tests/test_permissions.py
parentba52c0c62762b9976fffa72dde7ce922176e481d (diff)
parent080bd3d24e1866df2acc3aae0ec0f97ebe3a8c36 (diff)
downloaddjango-rest-framework-c50a42bddc66e28d624cd3caadd2d63502ac2e6e.tar.bz2
Merge branch 'master' of github.com:tomchristie/django-rest-framework
Diffstat (limited to 'tests/test_permissions.py')
-rw-r--r--tests/test_permissions.py37
1 files changed, 19 insertions, 18 deletions
diff --git a/tests/test_permissions.py b/tests/test_permissions.py
index 93f8020f..97bac33d 100644
--- a/tests/test_permissions.py
+++ b/tests/test_permissions.py
@@ -3,7 +3,7 @@ from django.contrib.auth.models import User, Permission, Group
from django.db import models
from django.test import TestCase
from django.utils import unittest
-from rest_framework import generics, status, permissions, authentication, HTTP_HEADER_ENCODING
+from rest_framework import generics, serializers, status, permissions, authentication, HTTP_HEADER_ENCODING
from rest_framework.compat import guardian, get_model_name
from rest_framework.filters import DjangoObjectPermissionsFilter
from rest_framework.test import APIRequestFactory
@@ -13,14 +13,21 @@ import base64
factory = APIRequestFactory()
+class BasicSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = BasicModel
+
+
class RootView(generics.ListCreateAPIView):
- model = BasicModel
+ queryset = BasicModel.objects.all()
+ serializer_class = BasicSerializer
authentication_classes = [authentication.BasicAuthentication]
permission_classes = [permissions.DjangoModelPermissions]
class InstanceView(generics.RetrieveUpdateDestroyAPIView):
- model = BasicModel
+ queryset = BasicModel.objects.all()
+ serializer_class = BasicSerializer
authentication_classes = [authentication.BasicAuthentication]
permission_classes = [permissions.DjangoModelPermissions]
@@ -88,19 +95,6 @@ class ModelPermissionsIntegrationTests(TestCase):
response = instance_view(request, pk=1)
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
- def test_has_put_as_create_permissions(self):
- # User only has update permissions - should be able to update an entity.
- request = factory.put('/1', {'text': 'foobar'}, format='json',
- HTTP_AUTHORIZATION=self.updateonly_credentials)
- response = instance_view(request, pk='1')
- self.assertEqual(response.status_code, status.HTTP_200_OK)
-
- # But if PUTing to a new entity, permission should be denied.
- request = factory.put('/2', {'text': 'foobar'}, format='json',
- HTTP_AUTHORIZATION=self.updateonly_credentials)
- response = instance_view(request, pk='2')
- self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
-
def test_options_permitted(self):
request = factory.options(
'/',
@@ -167,6 +161,11 @@ class BasicPermModel(models.Model):
)
+class BasicPermSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = BasicPermModel
+
+
# Custom object-level permission, that includes 'view' permissions
class ViewObjectPermissions(permissions.DjangoObjectPermissions):
perms_map = {
@@ -181,7 +180,8 @@ class ViewObjectPermissions(permissions.DjangoObjectPermissions):
class ObjectPermissionInstanceView(generics.RetrieveUpdateDestroyAPIView):
- model = BasicPermModel
+ queryset = BasicPermModel.objects.all()
+ serializer_class = BasicPermSerializer
authentication_classes = [authentication.BasicAuthentication]
permission_classes = [ViewObjectPermissions]
@@ -189,7 +189,8 @@ object_permissions_view = ObjectPermissionInstanceView.as_view()
class ObjectPermissionListView(generics.ListAPIView):
- model = BasicPermModel
+ queryset = BasicPermModel.objects.all()
+ serializer_class = BasicPermSerializer
authentication_classes = [authentication.BasicAuthentication]
permission_classes = [ViewObjectPermissions]