diff options
Diffstat (limited to 'rest_framework/tests/test_views.py')
| -rw-r--r-- | rest_framework/tests/test_views.py | 142 | 
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) | 
