diff options
| author | Jones Chi | 2014-10-03 14:42:49 +0800 | 
|---|---|---|
| committer | ys.chi | 2014-10-06 15:10:35 +0800 | 
| commit | 2dfe75c23a041493bc83514d8e9e9268b79072d9 (patch) | |
| tree | ea0e0597b725af0da19a44dfe512e1b17523f32a /tests/test_testing.py | |
| parent | ad1497898b30c299e4e6fe0fbe3872b6e1ed27b8 (diff) | |
| download | django-rest-framework-2dfe75c23a041493bc83514d8e9e9268b79072d9.tar.bz2 | |
Fix follow does not work on APIClient
Handle follow just like Django's Client.
Diffstat (limited to 'tests/test_testing.py')
| -rw-r--r-- | tests/test_testing.py | 47 | 
1 files changed, 47 insertions, 0 deletions
| diff --git a/tests/test_testing.py b/tests/test_testing.py index 9c472026..9fd5966e 100644 --- a/tests/test_testing.py +++ b/tests/test_testing.py @@ -5,6 +5,7 @@ from django.conf.urls import patterns, url  from io import BytesIO  from django.contrib.auth.models import User +from django.shortcuts import redirect  from django.test import TestCase  from rest_framework.decorators import api_view  from rest_framework.response import Response @@ -28,10 +29,16 @@ def session_view(request):      }) +@api_view(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS']) +def redirect_view(request): +    return redirect('/view/') + +  urlpatterns = patterns(      '',      url(r'^view/$', view),      url(r'^session-view/$', session_view), +    url(r'^redirect-view/$', redirect_view),  ) @@ -111,6 +118,46 @@ class TestAPITestClient(TestCase):          response = self.client.get('/view/')          self.assertEqual(response.data['auth'], b'') +    def test_follow_redirect(self): +        """ +        Follow redirect by setting follow argument. +        """ +        response = self.client.get('/redirect-view/') +        self.assertEqual(response.status_code, 302) +        response = self.client.get('/redirect-view/', follow=True) +        self.assertIsNotNone(response.redirect_chain) +        self.assertEqual(response.status_code, 200) + +        response = self.client.post('/redirect-view/') +        self.assertEqual(response.status_code, 302) +        response = self.client.post('/redirect-view/', follow=True) +        self.assertIsNotNone(response.redirect_chain) +        self.assertEqual(response.status_code, 200) + +        response = self.client.put('/redirect-view/') +        self.assertEqual(response.status_code, 302) +        response = self.client.put('/redirect-view/', follow=True) +        self.assertIsNotNone(response.redirect_chain) +        self.assertEqual(response.status_code, 200) + +        response = self.client.patch('/redirect-view/') +        self.assertEqual(response.status_code, 302) +        response = self.client.patch('/redirect-view/', follow=True) +        self.assertIsNotNone(response.redirect_chain) +        self.assertEqual(response.status_code, 200) + +        response = self.client.delete('/redirect-view/') +        self.assertEqual(response.status_code, 302) +        response = self.client.delete('/redirect-view/', follow=True) +        self.assertIsNotNone(response.redirect_chain) +        self.assertEqual(response.status_code, 200) + +        response = self.client.options('/redirect-view/') +        self.assertEqual(response.status_code, 302) +        response = self.client.options('/redirect-view/', follow=True) +        self.assertIsNotNone(response.redirect_chain) +        self.assertEqual(response.status_code, 200) +  class TestAPIRequestFactory(TestCase):      def test_csrf_exempt_by_default(self): | 
