aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/tests/test_views.py
diff options
context:
space:
mode:
authorDmitry Mukhin2014-08-20 20:04:48 +0400
committerDmitry Mukhin2014-08-20 20:04:48 +0400
commit3b07d0c9978335e183f369480618b48ff1e1b1ab (patch)
tree041027c50d2965da1be7f93b1a6360e07ad976f9 /rest_framework/tests/test_views.py
parentc3891b6e00daa7a92cca1c88599e046f72926bb4 (diff)
parent59b47eac14778767a17e56bd8adc0610417f2878 (diff)
downloaddjango-rest-framework-3b07d0c9978335e183f369480618b48ff1e1b1ab.tar.bz2
Merge branch 'master' into set-retry-after
Conflicts: tests/test_throttling.py
Diffstat (limited to 'rest_framework/tests/test_views.py')
-rw-r--r--rest_framework/tests/test_views.py142
1 files changed, 0 insertions, 142 deletions
diff --git a/rest_framework/tests/test_views.py b/rest_framework/tests/test_views.py
deleted file mode 100644
index 65c7e50e..00000000
--- a/rest_framework/tests/test_views.py
+++ /dev/null
@@ -1,142 +0,0 @@
-from __future__ import unicode_literals
-
-import copy
-from django.test import TestCase
-from rest_framework import status
-from rest_framework.decorators import api_view
-from rest_framework.response import Response
-from rest_framework.settings import api_settings
-from rest_framework.test import APIRequestFactory
-from rest_framework.views import APIView
-
-factory = APIRequestFactory()
-
-
-class BasicView(APIView):
- def get(self, request, *args, **kwargs):
- return Response({'method': 'GET'})
-
- def post(self, request, *args, **kwargs):
- return Response({'method': 'POST', 'data': request.DATA})
-
-
-@api_view(['GET', 'POST', 'PUT', 'PATCH'])
-def basic_view(request):
- if request.method == 'GET':
- return {'method': 'GET'}
- elif request.method == 'POST':
- return {'method': 'POST', 'data': request.DATA}
- elif request.method == 'PUT':
- return {'method': 'PUT', 'data': request.DATA}
- elif request.method == 'PATCH':
- return {'method': 'PATCH', 'data': request.DATA}
-
-
-class ErrorView(APIView):
- def get(self, request, *args, **kwargs):
- raise Exception
-
-
-@api_view(['GET'])
-def error_view(request):
- raise Exception
-
-
-def sanitise_json_error(error_dict):
- """
- Exact contents of JSON error messages depend on the installed version
- of json.
- """
- ret = copy.copy(error_dict)
- chop = len('JSON parse error - No JSON object could be decoded')
- ret['detail'] = ret['detail'][:chop]
- return ret
-
-
-class ClassBasedViewIntegrationTests(TestCase):
- def setUp(self):
- self.view = BasicView.as_view()
-
- def test_400_parse_error(self):
- request = factory.post('/', 'f00bar', content_type='application/json')
- response = self.view(request)
- expected = {
- 'detail': 'JSON parse error - No JSON object could be decoded'
- }
- self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
- self.assertEqual(sanitise_json_error(response.data), expected)
-
- def test_400_parse_error_tunneled_content(self):
- content = 'f00bar'
- content_type = 'application/json'
- form_data = {
- api_settings.FORM_CONTENT_OVERRIDE: content,
- api_settings.FORM_CONTENTTYPE_OVERRIDE: content_type
- }
- request = factory.post('/', form_data)
- response = self.view(request)
- expected = {
- 'detail': 'JSON parse error - No JSON object could be decoded'
- }
- self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
- self.assertEqual(sanitise_json_error(response.data), expected)
-
-
-class FunctionBasedViewIntegrationTests(TestCase):
- def setUp(self):
- self.view = basic_view
-
- def test_400_parse_error(self):
- request = factory.post('/', 'f00bar', content_type='application/json')
- response = self.view(request)
- expected = {
- 'detail': 'JSON parse error - No JSON object could be decoded'
- }
- self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
- self.assertEqual(sanitise_json_error(response.data), expected)
-
- def test_400_parse_error_tunneled_content(self):
- content = 'f00bar'
- content_type = 'application/json'
- form_data = {
- api_settings.FORM_CONTENT_OVERRIDE: content,
- api_settings.FORM_CONTENTTYPE_OVERRIDE: content_type
- }
- request = factory.post('/', form_data)
- response = self.view(request)
- expected = {
- 'detail': 'JSON parse error - No JSON object could be decoded'
- }
- self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
- self.assertEqual(sanitise_json_error(response.data), expected)
-
-
-class TestCustomExceptionHandler(TestCase):
- def setUp(self):
- self.DEFAULT_HANDLER = api_settings.EXCEPTION_HANDLER
-
- def exception_handler(exc):
- return Response('Error!', status=status.HTTP_400_BAD_REQUEST)
-
- api_settings.EXCEPTION_HANDLER = exception_handler
-
- def tearDown(self):
- api_settings.EXCEPTION_HANDLER = self.DEFAULT_HANDLER
-
- def test_class_based_view_exception_handler(self):
- view = ErrorView.as_view()
-
- request = factory.get('/', content_type='application/json')
- response = view(request)
- expected = 'Error!'
- self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
- self.assertEqual(response.data, expected)
-
- def test_function_based_view_exception_handler(self):
- view = error_view
-
- request = factory.get('/', content_type='application/json')
- response = view(request)
- expected = 'Error!'
- self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
- self.assertEqual(response.data, expected)