aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/test.py
diff options
context:
space:
mode:
authorJones Chi2014-10-03 14:42:49 +0800
committerys.chi2014-10-06 15:10:35 +0800
commit2dfe75c23a041493bc83514d8e9e9268b79072d9 (patch)
treeea0e0597b725af0da19a44dfe512e1b17523f32a /rest_framework/test.py
parentad1497898b30c299e4e6fe0fbe3872b6e1ed27b8 (diff)
downloaddjango-rest-framework-2dfe75c23a041493bc83514d8e9e9268b79072d9.tar.bz2
Fix follow does not work on APIClient
Handle follow just like Django's Client.
Diffstat (limited to 'rest_framework/test.py')
-rw-r--r--rest_framework/test.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/rest_framework/test.py b/rest_framework/test.py
index 9b40353a..74d2c868 100644
--- a/rest_framework/test.py
+++ b/rest_framework/test.py
@@ -156,6 +156,52 @@ class APIClient(APIRequestFactory, DjangoClient):
kwargs.update(self._credentials)
return super(APIClient, self).request(**kwargs)
+ def get(self, path, data=None, follow=False, **extra):
+ response = super(APIClient, self).get(path, data=data, **extra)
+ if follow:
+ response = self._handle_redirects(response, **extra)
+ return response
+
+ def post(self, path, data=None, format=None, content_type=None,
+ follow=False, **extra):
+ response = super(APIClient, self).post(
+ path, data=data, format=format, content_type=content_type, **extra)
+ if follow:
+ response = self._handle_redirects(response, **extra)
+ return response
+
+ def put(self, path, data=None, format=None, content_type=None,
+ follow=False, **extra):
+ response = super(APIClient, self).put(
+ path, data=data, format=format, content_type=content_type, **extra)
+ if follow:
+ response = self._handle_redirects(response, **extra)
+ return response
+
+ def patch(self, path, data=None, format=None, content_type=None,
+ follow=False, **extra):
+ response = super(APIClient, self).patch(
+ path, data=data, format=format, content_type=content_type, **extra)
+ if follow:
+ response = self._handle_redirects(response, **extra)
+ return response
+
+ def delete(self, path, data=None, format=None, content_type=None,
+ follow=False, **extra):
+ response = super(APIClient, self).delete(
+ path, data=data, format=format, content_type=content_type, **extra)
+ if follow:
+ response = self._handle_redirects(response, **extra)
+ return response
+
+ def options(self, path, data=None, format=None, content_type=None,
+ follow=False, **extra):
+ response = super(APIClient, self).options(
+ path, data=data, format=format, content_type=content_type, **extra)
+ if follow:
+ response = self._handle_redirects(response, **extra)
+ return response
+
def logout(self):
self._credentials = {}
return super(APIClient, self).logout()