summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2017-03-07 16:44:15 +0100
committerClaude Paroz <claude@2xlibre.net>2017-03-07 17:00:20 +0100
commitca58a405fca0ddc5ce2cb3d022dec403df1a5031 (patch)
tree8a82697f61f60e4e0d30a235da4b9e50498a6333
parent77c3cbe08a3bc8845a705519929f77237cb4d5d6 (diff)
[1.11.x] Refs #27622 -- Fixed a regression in JSON content-type detection
A JSON Content-Type can contain further content, like charset for example. Backport of 145f6c3ed6e8856078e2d04ff2567e9fb4a17930 from master.
-rw-r--r--django/test/client.py2
-rw-r--r--tests/test_client_regress/tests.py7
2 files changed, 7 insertions, 2 deletions
diff --git a/django/test/client.py b/django/test/client.py
index 05d3d78603..d04a718b88 100644
--- a/django/test/client.py
+++ b/django/test/client.py
@@ -35,7 +35,7 @@ BOUNDARY = 'BoUnDaRyStRiNg'
MULTIPART_CONTENT = 'multipart/form-data; boundary=%s' % BOUNDARY
CONTENT_TYPE_RE = re.compile(r'.*; charset=([\w\d-]+);?')
# JSON Vendor Tree spec: https://tools.ietf.org/html/rfc6838#section-3.2
-JSON_CONTENT_TYPE_RE = re.compile(r'^application\/(vnd\..+\+)?json$')
+JSON_CONTENT_TYPE_RE = re.compile(r'^application\/(vnd\..+\+)?json')
class RedirectCycleError(Exception):
diff --git a/tests/test_client_regress/tests.py b/tests/test_client_regress/tests.py
index c21fd8651f..9ed2741f47 100644
--- a/tests/test_client_regress/tests.py
+++ b/tests/test_client_regress/tests.py
@@ -1219,7 +1219,12 @@ class RequestMethodStringDataTests(SimpleTestCase):
self.assertEqual(response.json(), {'key': 'value'})
def test_json_vendor(self):
- for content_type in ('application/vnd.api+json', 'application/vnd.api.foo+json'):
+ valid_types = (
+ 'application/vnd.api+json',
+ 'application/vnd.api.foo+json',
+ 'application/json; charset=utf-8',
+ )
+ for content_type in valid_types:
response = self.client.get('/json_response/', {'content_type': content_type})
self.assertEqual(response['Content-Type'], content_type)
self.assertEqual(response.json(), {'key': 'value'})