diff options
| author | Tom Christie | 2013-07-01 13:59:05 +0100 | 
|---|---|---|
| committer | Tom Christie | 2013-07-01 13:59:05 +0100 | 
| commit | 0a722de171b0e80ac26d8c77b8051a4170bdb4c6 (patch) | |
| tree | 2ab02448965b7cc288fced2d3a1185d70050fac9 /rest_framework/tests | |
| parent | d31d7c18676b6292e8dc688b61913d572eccde91 (diff) | |
| download | django-rest-framework-0a722de171b0e80ac26d8c77b8051a4170bdb4c6.tar.bz2 | |
Complete testing docs
Diffstat (limited to 'rest_framework/tests')
| -rw-r--r-- | rest_framework/tests/test_testing.py | 55 | 
1 files changed, 51 insertions, 4 deletions
| diff --git a/rest_framework/tests/test_testing.py b/rest_framework/tests/test_testing.py index 3706f38c..49d45fc2 100644 --- a/rest_framework/tests/test_testing.py +++ b/rest_framework/tests/test_testing.py @@ -6,11 +6,11 @@ from django.test import TestCase  from rest_framework.compat import patterns, url  from rest_framework.decorators import api_view  from rest_framework.response import Response -from rest_framework.test import APIClient +from rest_framework.test import APIClient, APIRequestFactory, force_authenticate  @api_view(['GET', 'POST']) -def mirror(request): +def view(request):      return Response({          'auth': request.META.get('HTTP_AUTHORIZATION', b''),          'user': request.user.username @@ -18,11 +18,11 @@ def mirror(request):  urlpatterns = patterns('', -    url(r'^view/$', mirror), +    url(r'^view/$', view),  ) -class CheckTestClient(TestCase): +class TestAPITestClient(TestCase):      urls = 'rest_framework.tests.test_testing'      def setUp(self): @@ -66,3 +66,50 @@ class CheckTestClient(TestCase):          expected = {'detail': 'CSRF Failed: CSRF cookie not set.'}          self.assertEqual(response.status_code, 403)          self.assertEqual(response.data, expected) + + +class TestAPIRequestFactory(TestCase): +    def test_csrf_exempt_by_default(self): +        """ +        By default, the test client is CSRF exempt. +        """ +        user = User.objects.create_user('example', 'example@example.com', 'password') +        factory = APIRequestFactory() +        request = factory.post('/view/') +        request.user = user +        response = view(request) +        self.assertEqual(response.status_code, 200) + +    def test_explicitly_enforce_csrf_checks(self): +        """ +        The test client can enforce CSRF checks. +        """ +        user = User.objects.create_user('example', 'example@example.com', 'password') +        factory = APIRequestFactory(enforce_csrf_checks=True) +        request = factory.post('/view/') +        request.user = user +        response = view(request) +        expected = {'detail': 'CSRF Failed: CSRF cookie not set.'} +        self.assertEqual(response.status_code, 403) +        self.assertEqual(response.data, expected) + +    def test_invalid_format(self): +        """ +        Attempting to use a format that is not configured will raise an +        assertion error. +        """ +        factory = APIRequestFactory() +        self.assertRaises(AssertionError, factory.post, +            path='/view/', data={'example': 1}, format='xml' +        ) + +    def test_force_authenticate(self): +        """ +        Setting `force_authenticate()` forcibly authenticates the request. +        """ +        user = User.objects.create_user('example', 'example@example.com') +        factory = APIRequestFactory() +        request = factory.get('/view') +        force_authenticate(request, user=user) +        response = view(request) +        self.assertEqual(response.data['user'], 'example') | 
