diff options
| author | Jamie Matthews | 2012-09-14 16:07:07 +0100 |
|---|---|---|
| committer | Jamie Matthews | 2012-09-14 16:07:07 +0100 |
| commit | 21b1116af568321227b1ce32fb15bc29ba0d8a62 (patch) | |
| tree | 542cf27b43eed0e29d270b526d572cb2cd2cb946 /djangorestframework/tests | |
| parent | 886f8b47510c830483b5adae1855593cdc3df2dc (diff) | |
| download | django-rest-framework-21b1116af568321227b1ce32fb15bc29ba0d8a62.tar.bz2 | |
First stab at new view decorators
Diffstat (limited to 'djangorestframework/tests')
| -rw-r--r-- | djangorestframework/tests/decorators.py | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/djangorestframework/tests/decorators.py b/djangorestframework/tests/decorators.py new file mode 100644 index 00000000..0d3be8f3 --- /dev/null +++ b/djangorestframework/tests/decorators.py @@ -0,0 +1,102 @@ +from django.test import TestCase +from djangorestframework.response import Response +from djangorestframework.compat import RequestFactory +from djangorestframework.renderers import JSONRenderer +from djangorestframework.parsers import JSONParser +from djangorestframework.authentication import BasicAuthentication +from djangorestframework.throttling import SimpleRateThottle +from djangorestframework.permissions import IsAuthenticated +from djangorestframework.decorators import ( + api_view, + renderer_classes, + parser_classes, + authentication_classes, + throttle_classes, + permission_classes, + LazyViewCreator +) + + +class DecoratorTestCase(TestCase): + + def setUp(self): + self.factory = RequestFactory() + + def test_wrap_view(self): + + @api_view(['GET']) + def view(request): + return Response({}) + + self.assertTrue(isinstance(view, LazyViewCreator)) + + 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): + + @renderer_classes([JSONRenderer]) + @api_view(['GET']) + def view(request): + return Response({}) + + request = self.factory.get('/') + response = view(request) + self.assertEqual(response.renderer_classes, [JSONRenderer]) + + def test_parser_classes(self): + + @parser_classes([JSONParser]) + @api_view(['GET']) + def view(request): + return Response({}) + + request = self.factory.get('/') + response = view(request) + self.assertEqual(response.request.parser_classes, [JSONParser]) + + def test_authentication_classes(self): + + @authentication_classes([BasicAuthentication]) + @api_view(['GET']) + def view(request): + return Response({}) + + request = self.factory.get('/') + response = view(request) + self.assertEqual(response.request.authentication_classes, [BasicAuthentication]) + +# Doesn't look like these bits are working quite yet + +# def test_throttle_classes(self): +# +# @throttle_classes([SimpleRateThottle]) +# @api_view(['GET']) +# def view(request): +# return Response({}) +# +# request = self.factory.get('/') +# response = view(request) +# self.assertEqual(response.request.throttle, [SimpleRateThottle]) + +# def test_permission_classes(self): + +# @permission_classes([IsAuthenticated]) +# @api_view(['GET']) +# def view(request): +# return Response({}) + +# request = self.factory.get('/') +# response = view(request) +# self.assertEqual(response.request.permission_classes, [IsAuthenticated]) |
