mirror of https://github.com/django/django.git
Fixed #17797 -- Enabled support for PATCH requests in the dummy test client. Thanks to pfarmer for the suggestion and initial patch.
This commit is contained in:
parent
08dc90bccf
commit
293f7a2114
|
@ -319,6 +319,11 @@ class RequestFactory(object):
|
||||||
"Construct a PUT request."
|
"Construct a PUT request."
|
||||||
return self.generic('PUT', path, data, content_type, **extra)
|
return self.generic('PUT', path, data, content_type, **extra)
|
||||||
|
|
||||||
|
def patch(self, path, data='', content_type='application/octet-stream',
|
||||||
|
**extra):
|
||||||
|
"Construct a PATCH request."
|
||||||
|
return self.generic('PATCH', path, data, content_type, **extra)
|
||||||
|
|
||||||
def delete(self, path, data='', content_type='application/octet-stream',
|
def delete(self, path, data='', content_type='application/octet-stream',
|
||||||
**extra):
|
**extra):
|
||||||
"Construct a DELETE request."
|
"Construct a DELETE request."
|
||||||
|
@ -496,6 +501,17 @@ class Client(RequestFactory):
|
||||||
response = self._handle_redirects(response, **extra)
|
response = self._handle_redirects(response, **extra)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
def patch(self, path, data='', content_type='application/octet-stream',
|
||||||
|
follow=False, **extra):
|
||||||
|
"""
|
||||||
|
Send a resource to the server using PATCH.
|
||||||
|
"""
|
||||||
|
response = super(Client, self).patch(
|
||||||
|
path, data=data, content_type=content_type, **extra)
|
||||||
|
if follow:
|
||||||
|
response = self._handle_redirects(response, **extra)
|
||||||
|
return response
|
||||||
|
|
||||||
def delete(self, path, data='', content_type='application/octet-stream',
|
def delete(self, path, data='', content_type='application/octet-stream',
|
||||||
follow=False, **extra):
|
follow=False, **extra):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -633,6 +633,14 @@ Use the ``django.test.client.Client`` class to make requests.
|
||||||
The ``follow`` and ``extra`` arguments act the same as for
|
The ``follow`` and ``extra`` arguments act the same as for
|
||||||
:meth:`Client.get`.
|
:meth:`Client.get`.
|
||||||
|
|
||||||
|
.. method:: Client.patch(path, data='', content_type='application/octet-stream', follow=False, **extra)
|
||||||
|
|
||||||
|
Makes a PATCH request on the provided ``path`` and returns a
|
||||||
|
``Response`` object. Useful for testing RESTful interfaces.
|
||||||
|
|
||||||
|
The ``follow`` and ``extra`` arguments act the same as for
|
||||||
|
:meth:`Client.get`.
|
||||||
|
|
||||||
.. method:: Client.delete(path, data='', content_type='application/octet-stream', follow=False, **extra)
|
.. method:: Client.delete(path, data='', content_type='application/octet-stream', follow=False, **extra)
|
||||||
|
|
||||||
Makes an DELETE request on the provided ``path`` and returns a
|
Makes an DELETE request on the provided ``path`` and returns a
|
||||||
|
|
|
@ -783,6 +783,13 @@ class RequestMethodTests(TestCase):
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
self.assertEqual(response.content, b'request method: DELETE')
|
self.assertEqual(response.content, b'request method: DELETE')
|
||||||
|
|
||||||
|
def test_patch(self):
|
||||||
|
"Request a view via request method PATCH"
|
||||||
|
response = self.client.patch('/test_client_regress/request_methods/')
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
self.assertEqual(response.content, b'request method: PATCH')
|
||||||
|
|
||||||
|
|
||||||
class RequestMethodStringDataTests(TestCase):
|
class RequestMethodStringDataTests(TestCase):
|
||||||
def test_post(self):
|
def test_post(self):
|
||||||
"Request a view with string data via request method POST"
|
"Request a view with string data via request method POST"
|
||||||
|
@ -800,6 +807,14 @@ class RequestMethodStringDataTests(TestCase):
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
self.assertEqual(response.content, b'request method: PUT')
|
self.assertEqual(response.content, b'request method: PUT')
|
||||||
|
|
||||||
|
def test_patch(self):
|
||||||
|
"Request a view with string data via request method PATCH"
|
||||||
|
# Regression test for #17797
|
||||||
|
data = u'{"test": "json"}'
|
||||||
|
response = self.client.patch('/test_client_regress/request_methods/', data=data, content_type='application/json')
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
self.assertEqual(response.content, b'request method: PATCH')
|
||||||
|
|
||||||
class QueryStringTests(TestCase):
|
class QueryStringTests(TestCase):
|
||||||
def test_get_like_requests(self):
|
def test_get_like_requests(self):
|
||||||
# See: https://code.djangoproject.com/ticket/10571.
|
# See: https://code.djangoproject.com/ticket/10571.
|
||||||
|
|
Loading…
Reference in New Issue