aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/tests/test_views.py
diff options
context:
space:
mode:
authorAndreas Pelme2014-03-02 12:40:30 +0100
committerAndreas Pelme2014-03-02 12:40:30 +0100
commit971578ca345c3d3bae7fd93b87c41d43483b6f05 (patch)
tree72a6d3d0ced5750a8ba01bedc3a6f8a936e05e2f /rest_framework/tests/test_views.py
parent62786a7ad64918022f11f1b95ce84adb8d798830 (diff)
downloaddjango-rest-framework-971578ca345c3d3bae7fd93b87c41d43483b6f05.tar.bz2
Support for running the test suite with py.test
* Get rid of runtests.py * Moved test code from rest_framework/tests and rest_framework/runtests to tests * Invoke py.test from setup.py * Invoke py.test from Travis * Invoke py.test from tox * Changed setUpClass to be just plain setUp in test_permissions.py * Updated contribution guideline to show how to invoke py.test
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)