summaryrefslogtreecommitdiff
path: root/tests/test_client_regress
diff options
context:
space:
mode:
authorJon Dufresne <jon.dufresne@gmail.com>2019-06-06 21:40:15 -0700
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-06-07 06:40:15 +0200
commitd6ea4898c44f75a25bc0b7a60b54fd6dddc69eb5 (patch)
treee8d9c331699f03c42dc03b677c79918331abbdd5 /tests/test_client_regress
parent498092377b3ad033b29a45ba5a05609682426f2d (diff)
downloaddjango-d6ea4898c44f75a25bc0b7a60b54fd6dddc69eb5.tar.gz
Fixed #30550 -- Fixed decoding of non-UTF-8 bytes objects in response.json().
Diffstat (limited to 'tests/test_client_regress')
-rw-r--r--tests/test_client_regress/tests.py5
-rw-r--r--tests/test_client_regress/urls.py1
-rw-r--r--tests/test_client_regress/views.py4
3 files changed, 10 insertions, 0 deletions
diff --git a/tests/test_client_regress/tests.py b/tests/test_client_regress/tests.py
index 568317ec26..0763ae67b1 100644
--- a/tests/test_client_regress/tests.py
+++ b/tests/test_client_regress/tests.py
@@ -1204,6 +1204,11 @@ class RequestMethodStringDataTests(SimpleTestCase):
response = self.client.get('/json_response/')
self.assertEqual(response.json(), {'key': 'value'})
+ def test_json_charset(self):
+ response = self.client.get('/json_response_latin1/')
+ self.assertEqual(response.charset, 'latin1')
+ self.assertEqual(response.json(), {'a': 'Å'})
+
def test_json_structured_suffixes(self):
valid_types = (
'application/vnd.api+json',
diff --git a/tests/test_client_regress/urls.py b/tests/test_client_regress/urls.py
index 18c037bc23..8590e5953a 100644
--- a/tests/test_client_regress/urls.py
+++ b/tests/test_client_regress/urls.py
@@ -31,6 +31,7 @@ urlpatterns = [
path('check_unicode/', views.return_unicode),
path('check_binary/', views.return_undecodable_binary),
path('json_response/', views.return_json_response),
+ path('json_response_latin1/', views.return_json_response_latin1),
path('parse_encoded_text/', views.return_text_file),
path('check_headers/', views.check_headers),
path('check_headers_redirect/', RedirectView.as_view(url='/check_headers/')),
diff --git a/tests/test_client_regress/views.py b/tests/test_client_regress/views.py
index 4758283ef9..94b0ab29a8 100644
--- a/tests/test_client_regress/views.py
+++ b/tests/test_client_regress/views.py
@@ -109,6 +109,10 @@ def return_json_response(request):
return JsonResponse({'key': 'value'}, **kwargs)
+def return_json_response_latin1(request):
+ return HttpResponse(b'{"a":"\xc5"}', content_type='application/json; charset=latin1')
+
+
def return_text_file(request):
"A view that parses and returns text as a file."
match = CONTENT_TYPE_RE.match(request.META['CONTENT_TYPE'])