diff options
| author | Jamie Matthews | 2012-09-26 13:52:29 +0100 |
|---|---|---|
| committer | Jamie Matthews | 2012-09-26 13:52:29 +0100 |
| commit | c13c8fe5bc41c0b8ea9a740663e937b812c3fef9 (patch) | |
| tree | 8afd537c40281f5fe795f249fa6b22a8cb483d01 /rest_framework/tests | |
| parent | 4be937a9b3731c3bb86b34b07eecb059f3bb374c (diff) | |
| download | django-rest-framework-c13c8fe5bc41c0b8ea9a740663e937b812c3fef9.tar.bz2 | |
Update to new rest_framework package name, simplify implementation
Diffstat (limited to 'rest_framework/tests')
| -rw-r--r-- | rest_framework/tests/decorators.py | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/rest_framework/tests/decorators.py b/rest_framework/tests/decorators.py new file mode 100644 index 00000000..d41f05d4 --- /dev/null +++ b/rest_framework/tests/decorators.py @@ -0,0 +1,107 @@ +from django.test import TestCase +from rest_framework.response import Response +from rest_framework.compat import RequestFactory +from rest_framework.renderers import JSONRenderer +from rest_framework.parsers import JSONParser +from rest_framework.authentication import BasicAuthentication +from rest_framework.throttling import SimpleRateThottle +from rest_framework.permissions import IsAuthenticated +from rest_framework.views import APIView +from rest_framework.decorators import ( + api_view, + renderer_classes, + parser_classes, + authentication_classes, + throttle_classes, + permission_classes, +) + + +class DecoratorTestCase(TestCase): + + def setUp(self): + self.factory = RequestFactory() + + def _finalize_response(self, request, response, *args, **kwargs): + print "HAI" + response.request = request + return APIView.finalize_response(self, request, response, *args, **kwargs) + + def test_wrap_view(self): + + @api_view(['GET']) + def view(request): + return Response({}) + + self.assertTrue(isinstance(view.cls_instance, APIView)) + + def test_calling_method(self): + + @api_view(['GET']) + def view(request): + return Response({}) + + request = self.factory.get('/') + response = view(request) + self.assertEqual(response.status_code, 200) + + request = self.factory.post('/') + response = view(request) + self.assertEqual(response.status_code, 405) + + def test_renderer_classes(self): + + @api_view(['GET']) + @renderer_classes([JSONRenderer]) + def view(request): + return Response({}) + + request = self.factory.get('/') + response = view(request) + self.assertTrue(isinstance(response.renderer, JSONRenderer)) + + def test_parser_classes(self): + + @api_view(['GET']) + @parser_classes([JSONParser]) + def view(request): + self.assertEqual(request.parser_classes, [JSONParser]) + return Response({}) + + request = self.factory.get('/') + view(request) + + def test_authentication_classes(self): + + @api_view(['GET']) + @authentication_classes([BasicAuthentication]) + def view(request): + self.assertEqual(request.authentication_classes, [BasicAuthentication]) + return Response({}) + + request = self.factory.get('/') + view(request) + + def test_permission_classes(self): + + @api_view(['GET']) + @permission_classes([IsAuthenticated]) + def view(request): + self.assertEqual(request.permission_classes, [IsAuthenticated]) + return Response({}) + + request = self.factory.get('/') + view(request) + +# Doesn't look like this bits are working quite yet + +# def test_throttle_classes(self): + +# @api_view(['GET']) +# @throttle_classes([SimpleRateThottle]) +# def view(request): +# self.assertEqual(request.throttle_classes, [SimpleRateThottle]) +# return Response({}) + +# request = self.factory.get('/') +# view(request) |
