diff options
| author | Tom Christie | 2013-06-21 22:03:07 +0100 | 
|---|---|---|
| committer | Tom Christie | 2013-06-21 22:03:07 +0100 | 
| commit | 3d4bb4b5533fa281c2f11c12ceb0a9ae61aa0d54 (patch) | |
| tree | 8b3d25f011cbc1ac6395480f476a036d908c78d5 /rest_framework/tests | |
| parent | 6d2ca75d8e2403a17fa7cb2d112f5241a0247226 (diff) | |
| download | django-rest-framework-3d4bb4b5533fa281c2f11c12ceb0a9ae61aa0d54.tar.bz2 | |
Ensure action kwargs properly handdled. Refs #940.
Diffstat (limited to 'rest_framework/tests')
| -rw-r--r-- | rest_framework/tests/test_routers.py | 35 | 
1 files changed, 32 insertions, 3 deletions
diff --git a/rest_framework/tests/test_routers.py b/rest_framework/tests/test_routers.py index 291142cf..fe0711fa 100644 --- a/rest_framework/tests/test_routers.py +++ b/rest_framework/tests/test_routers.py @@ -2,7 +2,7 @@ from __future__ import unicode_literals  from django.db import models  from django.test import TestCase  from django.test.client import RequestFactory -from rest_framework import serializers, viewsets +from rest_framework import serializers, viewsets, permissions  from rest_framework.compat import include, patterns, url  from rest_framework.decorators import link, action  from rest_framework.response import Response @@ -120,7 +120,7 @@ class TestCustomLookupFields(TestCase):          ) -class TestTrailingSlash(TestCase): +class TestTrailingSlashIncluded(TestCase):      def setUp(self):          class NoteViewSet(viewsets.ModelViewSet):              model = RouterTestModel @@ -135,7 +135,7 @@ class TestTrailingSlash(TestCase):              self.assertEqual(expected[idx], self.urls[idx].regex.pattern) -class TestTrailingSlash(TestCase): +class TestTrailingSlashRemoved(TestCase):      def setUp(self):          class NoteViewSet(viewsets.ModelViewSet):              model = RouterTestModel @@ -149,6 +149,7 @@ class TestTrailingSlash(TestCase):          for idx in range(len(expected)):              self.assertEqual(expected[idx], self.urls[idx].regex.pattern) +  class TestNameableRoot(TestCase):      def setUp(self):          class NoteViewSet(viewsets.ModelViewSet): @@ -162,3 +163,31 @@ class TestNameableRoot(TestCase):          expected = 'nameable-root'          self.assertEqual(expected, self.urls[0].name) + +class TestActionKeywordArgs(TestCase): +    """ +    Ensure keyword arguments passed in the `@action` decorator +    are properly handled.  Refs #940. +    """ + +    def setUp(self): +        class TestViewSet(viewsets.ModelViewSet): +            permission_classes = [] + +            @action(permission_classes=[permissions.AllowAny]) +            def custom(self, request, *args, **kwargs): +                return Response({ +                    'permission_classes': self.permission_classes +                }) + +        self.router = SimpleRouter() +        self.router.register(r'test', TestViewSet, base_name='test') +        self.view = self.router.urls[-1].callback + +    def test_action_kwargs(self): +        request = factory.post('/test/0/custom/') +        response = self.view(request) +        self.assertEqual( +            response.data, +            {'permission_classes': [permissions.AllowAny]} +        )  | 
