summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/admin_docs/test_middleware.py6
-rw-r--r--tests/admin_views/tests.py2
-rw-r--r--tests/auth_tests/test_views.py2
-rw-r--r--tests/cache/tests.py18
-rw-r--r--tests/conditional_processing/tests.py8
-rw-r--r--tests/contenttypes_tests/test_views.py4
-rw-r--r--tests/decorators/tests.py6
-rw-r--r--tests/generic_views/test_base.py10
-rw-r--r--tests/httpwrappers/tests.py81
-rw-r--r--tests/i18n/patterns/tests.py24
-rw-r--r--tests/middleware/test_security.py65
-rw-r--r--tests/middleware/tests.py48
-rw-r--r--tests/responses/test_fileresponse.py37
-rw-r--r--tests/responses/tests.py10
-rw-r--r--tests/sessions_tests/tests.py8
-rw-r--r--tests/shortcuts/tests.py4
-rw-r--r--tests/sitemaps_tests/test_generic.py2
-rw-r--r--tests/sitemaps_tests/test_http.py14
-rw-r--r--tests/syndication_tests/tests.py4
-rw-r--r--tests/template_tests/test_response.py12
-rw-r--r--tests/test_client/tests.py2
-rw-r--r--tests/test_client/views.py2
-rw-r--r--tests/test_client_regress/tests.py2
-rw-r--r--tests/view_tests/tests/test_debug.py2
-rw-r--r--tests/view_tests/tests/test_i18n.py2
-rw-r--r--tests/view_tests/tests/test_json.py2
-rw-r--r--tests/view_tests/tests/test_static.py8
27 files changed, 229 insertions, 156 deletions
diff --git a/tests/admin_docs/test_middleware.py b/tests/admin_docs/test_middleware.py
index 7c89dce929..9f5f19fa32 100644
--- a/tests/admin_docs/test_middleware.py
+++ b/tests/admin_docs/test_middleware.py
@@ -13,7 +13,7 @@ class XViewMiddlewareTest(TestDataMixin, AdminDocsTestCase):
self.client.force_login(self.superuser)
response = self.client.head('/xview/func/')
self.assertIn('X-View', response)
- self.assertEqual(response['X-View'], 'admin_docs.views.xview')
+ self.assertEqual(response.headers['X-View'], 'admin_docs.views.xview')
user.is_staff = False
user.save()
response = self.client.head('/xview/func/')
@@ -31,7 +31,7 @@ class XViewMiddlewareTest(TestDataMixin, AdminDocsTestCase):
self.client.force_login(self.superuser)
response = self.client.head('/xview/class/')
self.assertIn('X-View', response)
- self.assertEqual(response['X-View'], 'admin_docs.views.XViewClass')
+ self.assertEqual(response.headers['X-View'], 'admin_docs.views.XViewClass')
user.is_staff = False
user.save()
response = self.client.head('/xview/class/')
@@ -45,7 +45,7 @@ class XViewMiddlewareTest(TestDataMixin, AdminDocsTestCase):
def test_callable_object_view(self):
self.client.force_login(self.superuser)
response = self.client.head('/xview/callable_object/')
- self.assertEqual(response['X-View'], 'admin_docs.views.XViewCallableObject')
+ self.assertEqual(response.headers['X-View'], 'admin_docs.views.XViewCallableObject')
@override_settings(MIDDLEWARE=[])
def test_no_auth_middleware(self):
diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py
index 61894de9f0..89ae04ff56 100644
--- a/tests/admin_views/tests.py
+++ b/tests/admin_views/tests.py
@@ -2964,7 +2964,7 @@ class AdminViewStringPrimaryKeyTest(TestCase):
)
self.assertEqual(response.status_code, 302) # temporary redirect
- self.assertIn('/123_2Fhistory/', response['location']) # PK is quoted
+ self.assertIn('/123_2Fhistory/', response.headers['location']) # PK is quoted
@override_settings(ROOT_URLCONF='admin_views.urls')
diff --git a/tests/auth_tests/test_views.py b/tests/auth_tests/test_views.py
index bb887e49ea..9d669c5d85 100644
--- a/tests/auth_tests/test_views.py
+++ b/tests/auth_tests/test_views.py
@@ -993,7 +993,7 @@ class LogoutTest(AuthViewsTestCase):
in #25490.
"""
response = self.client.get('/logout/')
- self.assertIn('no-store', response['Cache-Control'])
+ self.assertIn('no-store', response.headers['Cache-Control'])
def test_logout_with_overridden_redirect_url(self):
# Bug 11223
diff --git a/tests/cache/tests.py b/tests/cache/tests.py
index 93f0d87ecb..1c51c38b2b 100644
--- a/tests/cache/tests.py
+++ b/tests/cache/tests.py
@@ -1700,9 +1700,9 @@ class CacheUtils(SimpleTestCase):
with self.subTest(initial_vary=initial_vary, newheaders=newheaders):
response = HttpResponse()
if initial_vary is not None:
- response['Vary'] = initial_vary
+ response.headers['Vary'] = initial_vary
patch_vary_headers(response, newheaders)
- self.assertEqual(response['Vary'], resulting_vary)
+ self.assertEqual(response.headers['Vary'], resulting_vary)
def test_get_cache_key(self):
request = self.factory.get(self.path)
@@ -1753,7 +1753,7 @@ class CacheUtils(SimpleTestCase):
def test_learn_cache_key(self):
request = self.factory.head(self.path)
response = HttpResponse()
- response['Vary'] = 'Pony'
+ response.headers['Vary'] = 'Pony'
# Make sure that the Vary header is added to the key hash
learn_cache_key(request, response)
@@ -1795,9 +1795,9 @@ class CacheUtils(SimpleTestCase):
with self.subTest(initial_cc=initial_cc, newheaders=newheaders):
response = HttpResponse()
if initial_cc is not None:
- response['Cache-Control'] = initial_cc
+ response.headers['Cache-Control'] = initial_cc
patch_cache_control(response, **newheaders)
- parts = set(cc_delim_re.split(response['Cache-Control']))
+ parts = set(cc_delim_re.split(response.headers['Cache-Control']))
self.assertEqual(parts, expected_cc)
@@ -1892,7 +1892,7 @@ class CacheI18nTest(SimpleTestCase):
request.META['HTTP_ACCEPT_LANGUAGE'] = accept_language
request.META['HTTP_ACCEPT_ENCODING'] = 'gzip;q=1.0, identity; q=0.5, *;q=0'
response = HttpResponse()
- response['Vary'] = vary
+ response.headers['Vary'] = vary
key = learn_cache_key(request, response)
key2 = get_cache_key(request)
self.assertEqual(key, reference_key)
@@ -1905,7 +1905,7 @@ class CacheI18nTest(SimpleTestCase):
request = self.factory.get(self.path)
request.META['HTTP_ACCEPT_ENCODING'] = 'gzip;q=1.0, identity; q=0.5, *;q=0'
response = HttpResponse()
- response['Vary'] = 'accept-encoding'
+ response.headers['Vary'] = 'accept-encoding'
key = learn_cache_key(request, response)
self.assertIn(lang, key, "Cache keys should include the language name when translation is active")
self.check_accept_language_vary(
@@ -2364,9 +2364,9 @@ class TestWithTemplateResponse(SimpleTestCase):
template = engines['django'].from_string("This is a test")
response = TemplateResponse(HttpRequest(), template)
if initial_vary is not None:
- response['Vary'] = initial_vary
+ response.headers['Vary'] = initial_vary
patch_vary_headers(response, newheaders)
- self.assertEqual(response['Vary'], resulting_vary)
+ self.assertEqual(response.headers['Vary'], resulting_vary)
def test_get_cache_key(self):
request = self.factory.get(self.path)
diff --git a/tests/conditional_processing/tests.py b/tests/conditional_processing/tests.py
index 349b1cf7fe..4c7a32cba2 100644
--- a/tests/conditional_processing/tests.py
+++ b/tests/conditional_processing/tests.py
@@ -21,12 +21,12 @@ class ConditionalGet(SimpleTestCase):
self.assertEqual(response.content, FULL_RESPONSE.encode())
if response.request['REQUEST_METHOD'] in ('GET', 'HEAD'):
if check_last_modified:
- self.assertEqual(response['Last-Modified'], LAST_MODIFIED_STR)
+ self.assertEqual(response.headers['Last-Modified'], LAST_MODIFIED_STR)
if check_etag:
- self.assertEqual(response['ETag'], ETAG)
+ self.assertEqual(response.headers['ETag'], ETAG)
else:
- self.assertNotIn('Last-Modified', response)
- self.assertNotIn('ETag', response)
+ self.assertNotIn('Last-Modified', response.headers)
+ self.assertNotIn('ETag', response.headers)
def assertNotModified(self, response):
self.assertEqual(response.status_code, 304)
diff --git a/tests/contenttypes_tests/test_views.py b/tests/contenttypes_tests/test_views.py
index 4c654658ce..e54e5ff925 100644
--- a/tests/contenttypes_tests/test_views.py
+++ b/tests/contenttypes_tests/test_views.py
@@ -184,11 +184,11 @@ class ShortcutViewTests(TestCase):
response = shortcut(self.request, user_ct.id, obj.id)
self.assertEqual(
'http://%s/users/john/' % get_current_site(self.request).domain,
- response._headers.get('location')[1]
+ response.headers.get('location')
)
with self.modify_settings(INSTALLED_APPS={'remove': 'django.contrib.sites'}):
response = shortcut(self.request, user_ct.id, obj.id)
- self.assertEqual('http://Example.com/users/john/', response._headers.get('location')[1])
+ self.assertEqual('http://Example.com/users/john/', response.headers.get('location'))
def test_model_without_get_absolute_url(self):
"""The view returns 404 when Model.get_absolute_url() isn't defined."""
diff --git a/tests/decorators/tests.py b/tests/decorators/tests.py
index 6f1f02b1af..5bb21661e3 100644
--- a/tests/decorators/tests.py
+++ b/tests/decorators/tests.py
@@ -438,7 +438,7 @@ class XFrameOptionsDecoratorsTests(TestCase):
def a_view(request):
return HttpResponse()
r = a_view(HttpRequest())
- self.assertEqual(r['X-Frame-Options'], 'DENY')
+ self.assertEqual(r.headers['X-Frame-Options'], 'DENY')
def test_sameorigin_decorator(self):
"""
@@ -449,7 +449,7 @@ class XFrameOptionsDecoratorsTests(TestCase):
def a_view(request):
return HttpResponse()
r = a_view(HttpRequest())
- self.assertEqual(r['X-Frame-Options'], 'SAMEORIGIN')
+ self.assertEqual(r.headers['X-Frame-Options'], 'SAMEORIGIN')
def test_exempt_decorator(self):
"""
@@ -477,6 +477,6 @@ class NeverCacheDecoratorTest(TestCase):
return HttpResponse()
r = a_view(HttpRequest())
self.assertEqual(
- set(r['Cache-Control'].split(', ')),
+ set(r.headers['Cache-Control'].split(', ')),
{'max-age=0', 'no-cache', 'no-store', 'must-revalidate', 'private'},
)
diff --git a/tests/generic_views/test_base.py b/tests/generic_views/test_base.py
index 7aaea3ffa0..f4b8a487ff 100644
--- a/tests/generic_views/test_base.py
+++ b/tests/generic_views/test_base.py
@@ -195,7 +195,7 @@ class ViewTest(SimpleTestCase):
view = SimpleView.as_view()
response = view(request)
self.assertEqual(200, response.status_code)
- self.assertTrue(response['Allow'])
+ self.assertTrue(response.headers['Allow'])
def test_options_for_get_view(self):
"""
@@ -226,7 +226,7 @@ class ViewTest(SimpleTestCase):
def _assert_allows(self, response, *expected_methods):
"Assert allowed HTTP methods reported in the Allow response header"
- response_allows = set(response['Allow'].split(', '))
+ response_allows = set(response.headers['Allow'].split(', '))
self.assertEqual(set(expected_methods + ('OPTIONS',)), response_allows)
def test_args_kwargs_request_on_self(self):
@@ -390,7 +390,7 @@ class TemplateViewTest(SimpleTestCase):
def test_content_type(self):
response = self.client.get('/template/content_type/')
- self.assertEqual(response['Content-Type'], 'text/plain')
+ self.assertEqual(response.headers['Content-Type'], 'text/plain')
def test_resolve_view(self):
match = resolve('/template/content_type/')
@@ -461,12 +461,12 @@ class RedirectViewTest(SimpleTestCase):
"Named pattern parameter should reverse to the matching pattern"
response = RedirectView.as_view(pattern_name='artist_detail')(self.rf.get('/foo/'), pk=1)
self.assertEqual(response.status_code, 302)
- self.assertEqual(response['Location'], '/detail/artist/1/')
+ self.assertEqual(response.headers['Location'], '/detail/artist/1/')
def test_named_url_pattern_using_args(self):
response = RedirectView.as_view(pattern_name='artist_detail')(self.rf.get('/foo/'), 1)
self.assertEqual(response.status_code, 302)
- self.assertEqual(response['Location'], '/detail/artist/1/')
+ self.assertEqual(response.headers['Location'], '/detail/artist/1/')
def test_redirect_POST(self):
"Default is a temporary redirect"
diff --git a/tests/httpwrappers/tests.py b/tests/httpwrappers/tests.py
index 04c2a9516c..3c648f6b31 100644
--- a/tests/httpwrappers/tests.py
+++ b/tests/httpwrappers/tests.py
@@ -292,44 +292,44 @@ class HttpResponseTests(unittest.TestCase):
r = HttpResponse()
# ASCII strings or bytes values are converted to strings.
- r['key'] = 'test'
- self.assertEqual(r['key'], 'test')
- r['key'] = b'test'
- self.assertEqual(r['key'], 'test')
+ r.headers['key'] = 'test'
+ self.assertEqual(r.headers['key'], 'test')
+ r.headers['key'] = b'test'
+ self.assertEqual(r.headers['key'], 'test')
self.assertIn(b'test', r.serialize_headers())
# Non-ASCII values are serialized to Latin-1.
- r['key'] = 'café'
+ r.headers['key'] = 'café'
self.assertIn('café'.encode('latin-1'), r.serialize_headers())
# Other Unicode values are MIME-encoded (there's no way to pass them as
# bytes).
- r['key'] = '†'
- self.assertEqual(r['key'], '=?utf-8?b?4oCg?=')
+ r.headers['key'] = '†'
+ self.assertEqual(r.headers['key'], '=?utf-8?b?4oCg?=')
self.assertIn(b'=?utf-8?b?4oCg?=', r.serialize_headers())
# The response also converts string or bytes keys to strings, but requires
# them to contain ASCII
r = HttpResponse()
- del r['Content-Type']
- r['foo'] = 'bar'
- headers = list(r.items())
+ del r.headers['Content-Type']
+ r.headers['foo'] = 'bar'
+ headers = list(r.headers.items())
self.assertEqual(len(headers), 1)
self.assertEqual(headers[0], ('foo', 'bar'))
r = HttpResponse()
- del r['Content-Type']
- r[b'foo'] = 'bar'
- headers = list(r.items())
+ del r.headers['Content-Type']
+ r.headers[b'foo'] = 'bar'
+ headers = list(r.headers.items())
self.assertEqual(len(headers), 1)
self.assertEqual(headers[0], ('foo', 'bar'))
self.assertIsInstance(headers[0][0], str)
r = HttpResponse()
with self.assertRaises(UnicodeError):
- r.__setitem__('føø', 'bar')
+ r.headers.__setitem__('føø', 'bar')
with self.assertRaises(UnicodeError):
- r.__setitem__('føø'.encode(), 'bar')
+ r.headers.__setitem__('føø'.encode(), 'bar')
def test_long_line(self):
# Bug #20889: long lines trigger newlines to be added to headers
@@ -337,18 +337,18 @@ class HttpResponseTests(unittest.TestCase):
h = HttpResponse()
f = b'zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz a\xcc\x88'
f = f.decode('utf-8')
- h['Content-Disposition'] = 'attachment; filename="%s"' % f
+ h.headers['Content-Disposition'] = 'attachment; filename="%s"' % f
# This one is triggering https://bugs.python.org/issue20747, that is Python
# will itself insert a newline in the header
- h['Content-Disposition'] = 'attachment; filename="EdelRot_Blu\u0308te (3)-0.JPG"'
+ h.headers['Content-Disposition'] = 'attachment; filename="EdelRot_Blu\u0308te (3)-0.JPG"'
def test_newlines_in_headers(self):
# Bug #10188: Do not allow newlines in headers (CR or LF)
r = HttpResponse()
with self.assertRaises(BadHeaderError):
- r.__setitem__('test\rstr', 'test')
+ r.headers.__setitem__('test\rstr', 'test')
with self.assertRaises(BadHeaderError):
- r.__setitem__('test\nstr', 'test')
+ r.headers.__setitem__('test\nstr', 'test')
def test_dict_behavior(self):
"""
@@ -436,7 +436,7 @@ class HttpResponseTests(unittest.TestCase):
# with Content-Encoding header
r = HttpResponse()
- r['Content-Encoding'] = 'winning'
+ r.headers['Content-Encoding'] = 'winning'
r.write(b'abc')
r.write(b'def')
self.assertEqual(r.content, b'abcdef')
@@ -462,6 +462,14 @@ class HttpResponseTests(unittest.TestCase):
with self.assertRaises(DisallowedRedirect):
HttpResponsePermanentRedirect(url)
+ def test_header_deletion(self):
+ r = HttpResponse('hello')
+ r.headers['X-Foo'] = 'foo'
+ del r.headers['X-Foo']
+ self.assertNotIn('X-Foo', r.headers)
+ # del doesn't raise a KeyError on nonexistent headers.
+ del r.headers['X-Foo']
+
class HttpResponseSubclassesTests(SimpleTestCase):
def test_redirect(self):
@@ -474,7 +482,7 @@ class HttpResponseSubclassesTests(SimpleTestCase):
content_type='text/html',
)
self.assertContains(response, 'The resource has temporarily moved', status_code=302)
- self.assertEqual(response.url, response['Location'])
+ self.assertEqual(response.url, response.headers['Location'])
def test_redirect_lazy(self):
"""Make sure HttpResponseRedirect works with lazy strings."""
@@ -523,7 +531,7 @@ class HttpResponseSubclassesTests(SimpleTestCase):
def test_not_allowed_repr_no_content_type(self):
response = HttpResponseNotAllowed(('GET', 'POST'))
- del response['Content-Type']
+ del response.headers['Content-Type']
self.assertEqual(repr(response), '<HttpResponseNotAllowed [GET, POST] status_code=405>')
@@ -785,3 +793,32 @@ class CookieTests(unittest.TestCase):
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
C1 = pickle.loads(pickle.dumps(C, protocol=proto))
self.assertEqual(C1.output(), expected_output)
+
+
+class HttpResponseHeadersTestCase(SimpleTestCase):
+ """Headers by treating HttpResponse like a dictionary."""
+ def test_headers(self):
+ response = HttpResponse()
+ response['X-Foo'] = 'bar'
+ self.assertEqual(response['X-Foo'], 'bar')
+ self.assertEqual(response.headers['X-Foo'], 'bar')
+ self.assertIn('X-Foo', response)
+ self.assertIs(response.has_header('X-Foo'), True)
+ del response['X-Foo']
+ self.assertNotIn('X-Foo', response)
+ self.assertNotIn('X-Foo', response.headers)
+ # del doesn't raise a KeyError on nonexistent headers.
+ del response['X-Foo']
+
+ def test_headers_bytestring(self):
+ response = HttpResponse()
+ response['X-Foo'] = b'bar'
+ self.assertEqual(response['X-Foo'], 'bar')
+ self.assertEqual(response.headers['X-Foo'], 'bar')
+
+ def test_newlines_in_headers(self):
+ response = HttpResponse()
+ with self.assertRaises(BadHeaderError):
+ response['test\rstr'] = 'test'
+ with self.assertRaises(BadHeaderError):
+ response['test\nstr'] = 'test'
diff --git a/tests/i18n/patterns/tests.py b/tests/i18n/patterns/tests.py
index b561b04fb3..96e9453e9e 100644
--- a/tests/i18n/patterns/tests.py
+++ b/tests/i18n/patterns/tests.py
@@ -116,7 +116,7 @@ class PathUnusedTests(URLTestCaseBase):
def test_no_lang_activate(self):
response = self.client.get('/nl/foo/')
self.assertEqual(response.status_code, 200)
- self.assertEqual(response['content-language'], 'en')
+ self.assertEqual(response.headers['content-language'], 'en')
self.assertEqual(response.context['LANGUAGE_CODE'], 'en')
@@ -200,7 +200,7 @@ class URLRedirectTests(URLTestCaseBase):
response = self.client.get('/account/register/', HTTP_ACCEPT_LANGUAGE='en')
self.assertRedirects(response, '/en/account/register/')
- response = self.client.get(response['location'])
+ response = self.client.get(response.headers['location'])
self.assertEqual(response.status_code, 200)
def test_en_redirect_wrong_url(self):
@@ -211,7 +211,7 @@ class URLRedirectTests(URLTestCaseBase):
response = self.client.get('/profiel/registreren/', HTTP_ACCEPT_LANGUAGE='nl')
self.assertRedirects(response, '/nl/profiel/registreren/')
- response = self.client.get(response['location'])
+ response = self.client.get(response.headers['location'])
self.assertEqual(response.status_code, 200)
def test_nl_redirect_wrong_url(self):
@@ -222,7 +222,7 @@ class URLRedirectTests(URLTestCaseBase):
response = self.client.get('/conta/registre-se/', HTTP_ACCEPT_LANGUAGE='pt-br')
self.assertRedirects(response, '/pt-br/conta/registre-se/')
- response = self.client.get(response['location'])
+ response = self.client.get(response.headers['location'])
self.assertEqual(response.status_code, 200)
def test_pl_pl_redirect(self):
@@ -230,7 +230,7 @@ class URLRedirectTests(URLTestCaseBase):
response = self.client.get('/account/register/', HTTP_ACCEPT_LANGUAGE='pl-pl')
self.assertRedirects(response, '/en/account/register/')
- response = self.client.get(response['location'])
+ response = self.client.get(response.headers['location'])
self.assertEqual(response.status_code, 200)
@override_settings(
@@ -258,7 +258,7 @@ class URLVaryAcceptLanguageTests(URLTestCaseBase):
self.assertRedirects(response, '/en/account/register/')
self.assertFalse(response.get('Vary'))
- response = self.client.get(response['location'])
+ response = self.client.get(response.headers['location'])
self.assertEqual(response.status_code, 200)
self.assertFalse(response.get('Vary'))
@@ -297,7 +297,7 @@ class URLRedirectWithoutTrailingSlashSettingTests(URLTestCaseBase):
response = self.client.get('/account/register-without-slash', HTTP_ACCEPT_LANGUAGE='en')
self.assertRedirects(response, '/en/account/register-without-slash', 302)
- response = self.client.get(response['location'])
+ response = self.client.get(response.headers['location'])
self.assertEqual(response.status_code, 200)
@@ -310,13 +310,13 @@ class URLResponseTests(URLTestCaseBase):
def test_en_url(self):
response = self.client.get('/en/account/register/')
self.assertEqual(response.status_code, 200)
- self.assertEqual(response['content-language'], 'en')
+ self.assertEqual(response.headers['content-language'], 'en')
self.assertEqual(response.context['LANGUAGE_CODE'], 'en')
def test_nl_url(self):
response = self.client.get('/nl/profiel/registreren/')
self.assertEqual(response.status_code, 200)
- self.assertEqual(response['content-language'], 'nl')
+ self.assertEqual(response.headers['content-language'], 'nl')
self.assertEqual(response.context['LANGUAGE_CODE'], 'nl')
def test_wrong_en_prefix(self):
@@ -330,19 +330,19 @@ class URLResponseTests(URLTestCaseBase):
def test_pt_br_url(self):
response = self.client.get('/pt-br/conta/registre-se/')
self.assertEqual(response.status_code, 200)
- self.assertEqual(response['content-language'], 'pt-br')
+ self.assertEqual(response.headers['content-language'], 'pt-br')
self.assertEqual(response.context['LANGUAGE_CODE'], 'pt-br')
def test_en_path(self):
response = self.client.get('/en/account/register-as-path/')
self.assertEqual(response.status_code, 200)
- self.assertEqual(response['content-language'], 'en')
+ self.assertEqual(response.headers['content-language'], 'en')
self.assertEqual(response.context['LANGUAGE_CODE'], 'en')
def test_nl_path(self):
response = self.client.get('/nl/profiel/registreren-als-pad/')
self.assertEqual(response.status_code, 200)
- self.assertEqual(response['content-language'], 'nl')
+ self.assertEqual(response.headers['content-language'], 'nl')
self.assertEqual(response.context['LANGUAGE_CODE'], 'nl')
diff --git a/tests/middleware/test_security.py b/tests/middleware/test_security.py
index d907c25166..d766643b9b 100644
--- a/tests/middleware/test_security.py
+++ b/tests/middleware/test_security.py
@@ -17,7 +17,7 @@ class SecurityMiddlewareTest(SimpleTestCase):
response = HttpResponse(*args, **kwargs)
if headers:
for k, v in headers.items():
- response[k] = v
+ response.headers[k] = v
return response
return get_response
@@ -47,7 +47,7 @@ class SecurityMiddlewareTest(SimpleTestCase):
"Strict-Transport-Security: max-age=3600" to the response.
"""
self.assertEqual(
- self.process_response(secure=True)["Strict-Transport-Security"],
+ self.process_response(secure=True).headers['Strict-Transport-Security'],
'max-age=3600',
)
@@ -60,7 +60,7 @@ class SecurityMiddlewareTest(SimpleTestCase):
response = self.process_response(
secure=True,
headers={"Strict-Transport-Security": "max-age=7200"})
- self.assertEqual(response["Strict-Transport-Security"], "max-age=7200")
+ self.assertEqual(response.headers["Strict-Transport-Security"], "max-age=7200")
@override_settings(SECURE_HSTS_SECONDS=3600)
def test_sts_only_if_secure(self):
@@ -68,7 +68,10 @@ class SecurityMiddlewareTest(SimpleTestCase):
The "Strict-Transport-Security" header is not added to responses going
over an insecure connection.
"""
- self.assertNotIn("Strict-Transport-Security", self.process_response(secure=False))
+ self.assertNotIn(
+ 'Strict-Transport-Security',
+ self.process_response(secure=False).headers,
+ )
@override_settings(SECURE_HSTS_SECONDS=0)
def test_sts_off(self):
@@ -76,7 +79,10 @@ class SecurityMiddlewareTest(SimpleTestCase):
With SECURE_HSTS_SECONDS=0, the middleware does not add a
"Strict-Transport-Security" header to the response.
"""
- self.assertNotIn("Strict-Transport-Security", self.process_response(secure=True))
+ self.assertNotIn(
+ 'Strict-Transport-Security',
+ self.process_response(secure=True).headers,
+ )
@override_settings(SECURE_HSTS_SECONDS=600, SECURE_HSTS_INCLUDE_SUBDOMAINS=True)
def test_sts_include_subdomains(self):
@@ -86,7 +92,10 @@ class SecurityMiddlewareTest(SimpleTestCase):
"includeSubDomains" directive to the response.
"""
response = self.process_response(secure=True)
- self.assertEqual(response["Strict-Transport-Security"], "max-age=600; includeSubDomains")
+ self.assertEqual(
+ response.headers['Strict-Transport-Security'],
+ 'max-age=600; includeSubDomains',
+ )
@override_settings(SECURE_HSTS_SECONDS=600, SECURE_HSTS_INCLUDE_SUBDOMAINS=False)
def test_sts_no_include_subdomains(self):
@@ -96,7 +105,7 @@ class SecurityMiddlewareTest(SimpleTestCase):
the "includeSubDomains" directive to the response.
"""
response = self.process_response(secure=True)
- self.assertEqual(response["Strict-Transport-Security"], "max-age=600")
+ self.assertEqual(response.headers["Strict-Transport-Security"], "max-age=600")
@override_settings(SECURE_HSTS_SECONDS=10886400, SECURE_HSTS_PRELOAD=True)
def test_sts_preload(self):
@@ -106,7 +115,10 @@ class SecurityMiddlewareTest(SimpleTestCase):
directive to the response.
"""
response = self.process_response(secure=True)
- self.assertEqual(response["Strict-Transport-Security"], "max-age=10886400; preload")
+ self.assertEqual(
+ response.headers['Strict-Transport-Security'],
+ 'max-age=10886400; preload',
+ )
@override_settings(SECURE_HSTS_SECONDS=10886400, SECURE_HSTS_INCLUDE_SUBDOMAINS=True, SECURE_HSTS_PRELOAD=True)
def test_sts_subdomains_and_preload(self):
@@ -117,7 +129,10 @@ class SecurityMiddlewareTest(SimpleTestCase):
to the response.
"""
response = self.process_response(secure=True)
- self.assertEqual(response["Strict-Transport-Security"], "max-age=10886400; includeSubDomains; preload")
+ self.assertEqual(
+ response.headers['Strict-Transport-Security'],
+ 'max-age=10886400; includeSubDomains; preload',
+ )
@override_settings(SECURE_HSTS_SECONDS=10886400, SECURE_HSTS_PRELOAD=False)
def test_sts_no_preload(self):
@@ -127,7 +142,10 @@ class SecurityMiddlewareTest(SimpleTestCase):
the "preload" directive to the response.
"""
response = self.process_response(secure=True)
- self.assertEqual(response["Strict-Transport-Security"], "max-age=10886400")
+ self.assertEqual(
+ response.headers['Strict-Transport-Security'],
+ 'max-age=10886400',
+ )
@override_settings(SECURE_CONTENT_TYPE_NOSNIFF=True)
def test_content_type_on(self):
@@ -135,7 +153,10 @@ class SecurityMiddlewareTest(SimpleTestCase):
With SECURE_CONTENT_TYPE_NOSNIFF set to True, the middleware adds
"X-Content-Type-Options: nosniff" header to the response.
"""
- self.assertEqual(self.process_response()["X-Content-Type-Options"], "nosniff")
+ self.assertEqual(
+ self.process_response().headers['X-Content-Type-Options'],
+ 'nosniff',
+ )
@override_settings(SECURE_CONTENT_TYPE_NOSNIFF=True)
def test_content_type_already_present(self):
@@ -144,7 +165,7 @@ class SecurityMiddlewareTest(SimpleTestCase):
already present in the response.
"""
response = self.process_response(secure=True, headers={"X-Content-Type-Options": "foo"})
- self.assertEqual(response["X-Content-Type-Options"], "foo")
+ self.assertEqual(response.headers["X-Content-Type-Options"], "foo")
@override_settings(SECURE_CONTENT_TYPE_NOSNIFF=False)
def test_content_type_off(self):
@@ -152,7 +173,7 @@ class SecurityMiddlewareTest(SimpleTestCase):
With SECURE_CONTENT_TYPE_NOSNIFF False, the middleware does not add an
"X-Content-Type-Options" header to the response.
"""
- self.assertNotIn("X-Content-Type-Options", self.process_response())
+ self.assertNotIn('X-Content-Type-Options', self.process_response().headers)
@override_settings(SECURE_BROWSER_XSS_FILTER=True)
def test_xss_filter_on(self):
@@ -160,7 +181,10 @@ class SecurityMiddlewareTest(SimpleTestCase):
With SECURE_BROWSER_XSS_FILTER set to True, the middleware adds
"s-xss-protection: 1; mode=block" header to the response.
"""
- self.assertEqual(self.process_response()["X-XSS-Protection"], "1; mode=block")
+ self.assertEqual(
+ self.process_response().headers['X-XSS-Protection'],
+ '1; mode=block',
+ )
@override_settings(SECURE_BROWSER_XSS_FILTER=True)
def test_xss_filter_already_present(self):
@@ -169,7 +193,7 @@ class SecurityMiddlewareTest(SimpleTestCase):
already present in the response.
"""
response = self.process_response(secure=True, headers={"X-XSS-Protection": "foo"})
- self.assertEqual(response["X-XSS-Protection"], "foo")
+ self.assertEqual(response.headers["X-XSS-Protection"], "foo")
@override_settings(SECURE_BROWSER_XSS_FILTER=False)
def test_xss_filter_off(self):
@@ -177,7 +201,7 @@ class SecurityMiddlewareTest(SimpleTestCase):
With SECURE_BROWSER_XSS_FILTER set to False, the middleware does not
add an "X-XSS-Protection" header to the response.
"""
- self.assertNotIn("X-XSS-Protection", self.process_response())
+ self.assertNotIn('X-XSS-Protection', self.process_response().headers)
@override_settings(SECURE_SSL_REDIRECT=True)
def test_ssl_redirect_on(self):
@@ -229,7 +253,7 @@ class SecurityMiddlewareTest(SimpleTestCase):
With SECURE_REFERRER_POLICY set to None, the middleware does not add a
"Referrer-Policy" header to the response.
"""
- self.assertNotIn('Referrer-Policy', self.process_response())
+ self.assertNotIn('Referrer-Policy', self.process_response().headers)
def test_referrer_policy_on(self):
"""
@@ -245,7 +269,10 @@ class SecurityMiddlewareTest(SimpleTestCase):
)
for value, expected in tests:
with self.subTest(value=value), override_settings(SECURE_REFERRER_POLICY=value):
- self.assertEqual(self.process_response()['Referrer-Policy'], expected)
+ self.assertEqual(
+ self.process_response().headers['Referrer-Policy'],
+ expected,
+ )
@override_settings(SECURE_REFERRER_POLICY='strict-origin')
def test_referrer_policy_already_present(self):
@@ -254,4 +281,4 @@ class SecurityMiddlewareTest(SimpleTestCase):
present in the response.
"""
response = self.process_response(headers={'Referrer-Policy': 'unsafe-url'})
- self.assertEqual(response['Referrer-Policy'], 'unsafe-url')
+ self.assertEqual(response.headers['Referrer-Policy'], 'unsafe-url')
diff --git a/tests/middleware/tests.py b/tests/middleware/tests.py
index 14c9284bbf..4b49858cd9 100644
--- a/tests/middleware/tests.py
+++ b/tests/middleware/tests.py
@@ -292,7 +292,7 @@ class CommonMiddlewareTest(SimpleTestCase):
return response
response = CommonMiddleware(get_response)(self.rf.get('/'))
- self.assertEqual(int(response['Content-Length']), len(response.content))
+ self.assertEqual(int(response.headers['Content-Length']), len(response.content))
def test_content_length_header_not_added_for_streaming_response(self):
def get_response(req):
@@ -308,11 +308,11 @@ class CommonMiddlewareTest(SimpleTestCase):
def get_response(req):
response = HttpResponse()
- response['Content-Length'] = bad_content_length
+ response.headers['Content-Length'] = bad_content_length
return response
response = CommonMiddleware(get_response)(self.rf.get('/'))
- self.assertEqual(int(response['Content-Length']), bad_content_length)
+ self.assertEqual(int(response.headers['Content-Length']), bad_content_length)
# Other tests
@@ -607,7 +607,7 @@ class ConditionalGetMiddlewareTest(SimpleTestCase):
self.assertEqual(new_response.status_code, 304)
base_response = get_response(self.req)
for header in ('Cache-Control', 'Content-Location', 'Date', 'ETag', 'Expires', 'Last-Modified', 'Vary'):
- self.assertEqual(new_response[header], base_response[header])
+ self.assertEqual(new_response.headers[header], base_response.headers[header])
self.assertEqual(new_response.cookies, base_response.cookies)
self.assertNotIn('Content-Language', new_response)
@@ -622,7 +622,7 @@ class ConditionalGetMiddlewareTest(SimpleTestCase):
return HttpResponse(status=200)
response = ConditionalGetMiddleware(self.get_response)(self.req)
- etag = response['ETag']
+ etag = response.headers['ETag']
put_request = self.request_factory.put('/', HTTP_IF_MATCH=etag)
conditional_get_response = ConditionalGetMiddleware(get_200_response)(put_request)
self.assertEqual(conditional_get_response.status_code, 200) # should never be a 412
@@ -653,11 +653,11 @@ class XFrameOptionsMiddlewareTest(SimpleTestCase):
"""
with override_settings(X_FRAME_OPTIONS='SAMEORIGIN'):
r = XFrameOptionsMiddleware(get_response_empty)(HttpRequest())
- self.assertEqual(r['X-Frame-Options'], 'SAMEORIGIN')
+ self.assertEqual(r.headers['X-Frame-Options'], 'SAMEORIGIN')
with override_settings(X_FRAME_OPTIONS='sameorigin'):
r = XFrameOptionsMiddleware(get_response_empty)(HttpRequest())
- self.assertEqual(r['X-Frame-Options'], 'SAMEORIGIN')
+ self.assertEqual(r.headers['X-Frame-Options'], 'SAMEORIGIN')
def test_deny(self):
"""
@@ -666,11 +666,11 @@ class XFrameOptionsMiddlewareTest(SimpleTestCase):
"""
with override_settings(X_FRAME_OPTIONS='DENY'):
r = XFrameOptionsMiddleware(get_response_empty)(HttpRequest())
- self.assertEqual(r['X-Frame-Options'], 'DENY')
+ self.assertEqual(r.headers['X-Frame-Options'], 'DENY')
with override_settings(X_FRAME_OPTIONS='deny'):
r = XFrameOptionsMiddleware(get_response_empty)(HttpRequest())
- self.assertEqual(r['X-Frame-Options'], 'DENY')
+ self.assertEqual(r.headers['X-Frame-Options'], 'DENY')
def test_defaults_sameorigin(self):
"""
@@ -680,7 +680,7 @@ class XFrameOptionsMiddlewareTest(SimpleTestCase):
with override_settings(X_FRAME_OPTIONS=None):
del settings.X_FRAME_OPTIONS # restored by override_settings
r = XFrameOptionsMiddleware(get_response_empty)(HttpRequest())
- self.assertEqual(r['X-Frame-Options'], 'DENY')
+ self.assertEqual(r.headers['X-Frame-Options'], 'DENY')
def test_dont_set_if_set(self):
"""
@@ -689,21 +689,21 @@ class XFrameOptionsMiddlewareTest(SimpleTestCase):
"""
def same_origin_response(request):
response = HttpResponse()
- response['X-Frame-Options'] = 'SAMEORIGIN'
+ response.headers['X-Frame-Options'] = 'SAMEORIGIN'
return response
def deny_response(request):
response = HttpResponse()
- response['X-Frame-Options'] = 'DENY'
+ response.headers['X-Frame-Options'] = 'DENY'
return response
with override_settings(X_FRAME_OPTIONS='DENY'):
r = XFrameOptionsMiddleware(same_origin_response)(HttpRequest())
- self.assertEqual(r['X-Frame-Options'], 'SAMEORIGIN')
+ self.assertEqual(r.headers['X-Frame-Options'], 'SAMEORIGIN')
with override_settings(X_FRAME_OPTIONS='SAMEORIGIN'):
r = XFrameOptionsMiddleware(deny_response)(HttpRequest())
- self.assertEqual(r['X-Frame-Options'], 'DENY')
+ self.assertEqual(r.headers['X-Frame-Options'], 'DENY')
def test_response_exempt(self):
"""
@@ -722,10 +722,10 @@ class XFrameOptionsMiddlewareTest(SimpleTestCase):
with override_settings(X_FRAME_OPTIONS='SAMEORIGIN'):
r = XFrameOptionsMiddleware(xframe_not_exempt_response)(HttpRequest())
- self.assertEqual(r['X-Frame-Options'], 'SAMEORIGIN')
+ self.assertEqual(r.headers['X-Frame-Options'], 'SAMEORIGIN')
r = XFrameOptionsMiddleware(xframe_exempt_response)(HttpRequest())
- self.assertIsNone(r.get('X-Frame-Options'))
+ self.assertIsNone(r.headers.get('X-Frame-Options'))
def test_is_extendable(self):
"""
@@ -749,16 +749,16 @@ class XFrameOptionsMiddlewareTest(SimpleTestCase):
with override_settings(X_FRAME_OPTIONS='DENY'):
r = OtherXFrameOptionsMiddleware(same_origin_response)(HttpRequest())
- self.assertEqual(r['X-Frame-Options'], 'SAMEORIGIN')
+ self.assertEqual(r.headers['X-Frame-Options'], 'SAMEORIGIN')
request = HttpRequest()
request.sameorigin = True
r = OtherXFrameOptionsMiddleware(get_response_empty)(request)
- self.assertEqual(r['X-Frame-Options'], 'SAMEORIGIN')
+ self.assertEqual(r.headers['X-Frame-Options'], 'SAMEORIGIN')
with override_settings(X_FRAME_OPTIONS='SAMEORIGIN'):
r = OtherXFrameOptionsMiddleware(get_response_empty)(HttpRequest())
- self.assertEqual(r['X-Frame-Options'], 'DENY')
+ self.assertEqual(r.headers['X-Frame-Options'], 'DENY')
class GZipMiddlewareTest(SimpleTestCase):
@@ -916,12 +916,12 @@ class ETagGZipMiddlewareTest(SimpleTestCase):
"""
def get_response(req):
response = HttpResponse(self.compressible_string)
- response['ETag'] = '"eggs"'
+ response.headers['ETag'] = '"eggs"'
return response
request = self.rf.get('/', HTTP_ACCEPT_ENCODING='gzip, deflate')
gzip_response = GZipMiddleware(get_response)(request)
- self.assertEqual(gzip_response['ETag'], 'W/"eggs"')
+ self.assertEqual(gzip_response.headers['ETag'], 'W/"eggs"')
def test_weak_etag_not_modified(self):
"""
@@ -929,12 +929,12 @@ class ETagGZipMiddlewareTest(SimpleTestCase):
"""
def get_response(req):
response = HttpResponse(self.compressible_string)
- response['ETag'] = 'W/"eggs"'
+ response.headers['ETag'] = 'W/"eggs"'
return response
request = self.rf.get('/', HTTP_ACCEPT_ENCODING='gzip, deflate')
gzip_response = GZipMiddleware(get_response)(request)
- self.assertEqual(gzip_response['ETag'], 'W/"eggs"')
+ self.assertEqual(gzip_response.headers['ETag'], 'W/"eggs"')
def test_etag_match(self):
"""
@@ -949,7 +949,7 @@ class ETagGZipMiddlewareTest(SimpleTestCase):
request = self.rf.get('/', HTTP_ACCEPT_ENCODING='gzip, deflate')
response = GZipMiddleware(get_cond_response)(request)
- gzip_etag = response['ETag']
+ gzip_etag = response.headers['ETag']
next_request = self.rf.get('/', HTTP_ACCEPT_ENCODING='gzip, deflate', HTTP_IF_NONE_MATCH=gzip_etag)
next_response = ConditionalGetMiddleware(get_response)(next_request)
self.assertEqual(next_response.status_code, 304)
diff --git a/tests/responses/test_fileresponse.py b/tests/responses/test_fileresponse.py
index e77df4513a..46d407bdf5 100644
--- a/tests/responses/test_fileresponse.py
+++ b/tests/responses/test_fileresponse.py
@@ -12,23 +12,26 @@ from django.test import SimpleTestCase
class FileResponseTests(SimpleTestCase):
def test_file_from_disk_response(self):
response = FileResponse(open(__file__, 'rb'))
- self.assertEqual(response['Content-Length'], str(os.path.getsize(__file__)))
- self.assertIn(response['Content-Type'], ['text/x-python', 'text/plain'])
- self.assertEqual(response['Content-Disposition'], 'inline; filename="test_fileresponse.py"')
+ self.assertEqual(response.headers['Content-Length'], str(os.path.getsize(__file__)))
+ self.assertIn(response.headers['Content-Type'], ['text/x-python', 'text/plain'])
+ self.assertEqual(
+ response.headers['Content-Disposition'],
+ 'inline; filename="test_fileresponse.py"',
+ )
response.close()
def test_file_from_buffer_response(self):
response = FileResponse(io.BytesIO(b'binary content'))
- self.assertEqual(response['Content-Length'], '14')
- self.assertEqual(response['Content-Type'], 'application/octet-stream')
+ self.assertEqual(response.headers['Content-Length'], '14')
+ self.assertEqual(response.headers['Content-Type'], 'application/octet-stream')
self.assertFalse(response.has_header('Content-Disposition'))
self.assertEqual(list(response), [b'binary content'])
def test_file_from_buffer_unnamed_attachment(self):
response = FileResponse(io.BytesIO(b'binary content'), as_attachment=True)
- self.assertEqual(response['Content-Length'], '14')
- self.assertEqual(response['Content-Type'], 'application/octet-stream')
- self.assertEqual(response['Content-Disposition'], 'attachment')
+ self.assertEqual(response.headers['Content-Length'], '14')
+ self.assertEqual(response.headers['Content-Type'], 'application/octet-stream')
+ self.assertEqual(response.headers['Content-Disposition'], 'attachment')
self.assertEqual(list(response), [b'binary content'])
@skipIf(sys.platform == 'win32', "Named pipes are Unix-only.")
@@ -47,9 +50,12 @@ class FileResponseTests(SimpleTestCase):
def test_file_from_disk_as_attachment(self):
response = FileResponse(open(__file__, 'rb'), as_attachment=True)
- self.assertEqual(response['Content-Length'], str(os.path.getsize(__file__)))
- self.assertIn(response['Content-Type'], ['text/x-python', 'text/plain'])
- self.assertEqual(response['Content-Disposition'], 'attachment; filename="test_fileresponse.py"')
+ self.assertEqual(response.headers['Content-Length'], str(os.path.getsize(__file__)))
+ self.assertIn(response.headers['Content-Type'], ['text/x-python', 'text/plain'])
+ self.assertEqual(
+ response.headers['Content-Disposition'],
+ 'attachment; filename="test_fileresponse.py"',
+ )
response.close()
def test_compressed_response(self):
@@ -67,7 +73,7 @@ class FileResponseTests(SimpleTestCase):
with self.subTest(ext=extension):
with tempfile.NamedTemporaryFile(suffix=extension) as tmp:
response = FileResponse(tmp)
- self.assertEqual(response['Content-Type'], mimetype)
+ self.assertEqual(response.headers['Content-Type'], mimetype)
self.assertFalse(response.has_header('Content-Encoding'))
def test_unicode_attachment(self):
@@ -75,8 +81,11 @@ class FileResponseTests(SimpleTestCase):
ContentFile(b'binary content', name="祝您平安.odt"), as_attachment=True,
content_type='application/vnd.oasis.opendocument.text',
)
- self.assertEqual(response['Content-Type'], 'application/vnd.oasis.opendocument.text')
self.assertEqual(
- response['Content-Disposition'],
+ response.headers['Content-Type'],
+ 'application/vnd.oasis.opendocument.text',
+ )
+ self.assertEqual(
+ response.headers['Content-Disposition'],
"attachment; filename*=utf-8''%E7%A5%9D%E6%82%A8%E5%B9%B3%E5%AE%89.odt"
)
diff --git a/tests/responses/tests.py b/tests/responses/tests.py
index 2c161ee352..059cdf86ed 100644
--- a/tests/responses/tests.py
+++ b/tests/responses/tests.py
@@ -39,12 +39,12 @@ class HttpResponseBaseTests(SimpleTestCase):
"""
r = HttpResponseBase()
- r['Header'] = 'Value'
+ r.headers['Header'] = 'Value'
r.setdefault('header', 'changed')
- self.assertEqual(r['header'], 'Value')
+ self.assertEqual(r.headers['header'], 'Value')
r.setdefault('x-header', 'DefaultValue')
- self.assertEqual(r['X-Header'], 'DefaultValue')
+ self.assertEqual(r.headers['X-Header'], 'DefaultValue')
class HttpResponseTests(SimpleTestCase):
@@ -92,7 +92,7 @@ class HttpResponseTests(SimpleTestCase):
response = HttpResponse(charset=ISO88591)
self.assertEqual(response.charset, ISO88591)
- self.assertEqual(response['Content-Type'], 'text/html; charset=%s' % ISO88591)
+ self.assertEqual(response.headers['Content-Type'], 'text/html; charset=%s' % ISO88591)
response = HttpResponse(content_type='text/plain; charset=%s' % UTF8, charset=ISO88591)
self.assertEqual(response.charset, ISO88591)
@@ -134,7 +134,7 @@ class HttpResponseTests(SimpleTestCase):
def test_repr_no_content_type(self):
response = HttpResponse(status=204)
- del response['Content-Type']
+ del response.headers['Content-Type']
self.assertEqual(repr(response), '<HttpResponse status_code=204>')
def test_wrap_textiowrapper(self):
diff --git a/tests/sessions_tests/tests.py b/tests/sessions_tests/tests.py
index 11adef9d75..2832fd8970 100644
--- a/tests/sessions_tests/tests.py
+++ b/tests/sessions_tests/tests.py
@@ -781,7 +781,7 @@ class SessionMiddlewareTests(TestCase):
)
# SessionMiddleware sets 'Vary: Cookie' to prevent the 'Set-Cookie'
# from being cached.
- self.assertEqual(response['Vary'], 'Cookie')
+ self.assertEqual(response.headers['Vary'], 'Cookie')
@override_settings(SESSION_COOKIE_DOMAIN='.example.local', SESSION_COOKIE_PATH='/example/')
def test_session_delete_on_end_with_custom_domain_and_path(self):
@@ -826,7 +826,7 @@ class SessionMiddlewareTests(TestCase):
# A cookie should not be set.
self.assertEqual(response.cookies, {})
# The session is accessed so "Vary: Cookie" should be set.
- self.assertEqual(response['Vary'], 'Cookie')
+ self.assertEqual(response.headers['Vary'], 'Cookie')
def test_empty_session_saved(self):
"""
@@ -849,7 +849,7 @@ class SessionMiddlewareTests(TestCase):
'Set-Cookie: sessionid=%s' % request.session.session_key,
str(response.cookies)
)
- self.assertEqual(response['Vary'], 'Cookie')
+ self.assertEqual(response.headers['Vary'], 'Cookie')
# Empty the session data.
del request.session['foo']
@@ -866,7 +866,7 @@ class SessionMiddlewareTests(TestCase):
'Set-Cookie: sessionid=%s' % request.session.session_key,
str(response.cookies)
)
- self.assertEqual(response['Vary'], 'Cookie')
+ self.assertEqual(response.headers['Vary'], 'Cookie')
class CookieSessionTests(SessionTestsMixin, SimpleTestCase):
diff --git a/tests/shortcuts/tests.py b/tests/shortcuts/tests.py
index fe68d67767..000b9eca00 100644
--- a/tests/shortcuts/tests.py
+++ b/tests/shortcuts/tests.py
@@ -9,7 +9,7 @@ class RenderTests(SimpleTestCase):
response = self.client.get('/render/')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.content, b'FOO.BAR../render/\n')
- self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')
+ self.assertEqual(response.headers['Content-Type'], 'text/html; charset=utf-8')
self.assertFalse(hasattr(response.context.request, 'current_app'))
def test_render_with_multiple_templates(self):
@@ -21,7 +21,7 @@ class RenderTests(SimpleTestCase):
response = self.client.get('/render/content_type/')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.content, b'FOO.BAR../render/content_type/\n')
- self.assertEqual(response['Content-Type'], 'application/x-rendertest')
+ self.assertEqual(response.headers['Content-Type'], 'application/x-rendertest')
def test_render_with_status(self):
response = self.client.get('/render/status/')
diff --git a/tests/sitemaps_tests/test_generic.py b/tests/sitemaps_tests/test_generic.py
index 0efdf4e61d..b1ec2fed35 100644
--- a/tests/sitemaps_tests/test_generic.py
+++ b/tests/sitemaps_tests/test_generic.py
@@ -56,4 +56,4 @@ class GenericViewsSitemapTests(SitemapTestsBase):
</urlset>
""" % (self.base_url, test_model.pk)
self.assertXMLEqual(response.content.decode(), expected_content)
- self.assertEqual(response['Last-Modified'], 'Wed, 13 Mar 2013 10:00:00 GMT')
+ self.assertEqual(response.headers['Last-Modified'], 'Wed, 13 Mar 2013 10:00:00 GMT')
diff --git a/tests/sitemaps_tests/test_http.py b/tests/sitemaps_tests/test_http.py
index 3281774cc5..b546c87fe6 100644
--- a/tests/sitemaps_tests/test_http.py
+++ b/tests/sitemaps_tests/test_http.py
@@ -116,14 +116,14 @@ class HTTPSitemapTests(SitemapTestsBase):
def test_sitemap_last_modified(self):
"Last-Modified header is set correctly"
response = self.client.get('/lastmod/sitemap.xml')
- self.assertEqual(response['Last-Modified'], 'Wed, 13 Mar 2013 10:00:00 GMT')
+ self.assertEqual(response.headers['Last-Modified'], 'Wed, 13 Mar 2013 10:00:00 GMT')
def test_sitemap_last_modified_date(self):
"""
The Last-Modified header should be support dates (without time).
"""
response = self.client.get('/lastmod/date-sitemap.xml')
- self.assertEqual(response['Last-Modified'], 'Wed, 13 Mar 2013 00:00:00 GMT')
+ self.assertEqual(response.headers['Last-Modified'], 'Wed, 13 Mar 2013 00:00:00 GMT')
def test_sitemap_last_modified_tz(self):
"""
@@ -131,7 +131,7 @@ class HTTPSitemapTests(SitemapTestsBase):
to GMT.
"""
response = self.client.get('/lastmod/tz-sitemap.xml')
- self.assertEqual(response['Last-Modified'], 'Wed, 13 Mar 2013 15:00:00 GMT')
+ self.assertEqual(response.headers['Last-Modified'], 'Wed, 13 Mar 2013 15:00:00 GMT')
def test_sitemap_last_modified_missing(self):
"Last-Modified header is missing when sitemap has no lastmod"
@@ -165,7 +165,7 @@ class HTTPSitemapTests(SitemapTestsBase):
Test sitemaps are sorted by lastmod in ascending order.
"""
response = self.client.get('/lastmod-sitemaps/ascending.xml')
- self.assertEqual(response['Last-Modified'], 'Sat, 20 Apr 2013 05:00:00 GMT')
+ self.assertEqual(response.headers['Last-Modified'], 'Sat, 20 Apr 2013 05:00:00 GMT')
def test_sitemaps_lastmod_descending(self):
"""
@@ -173,7 +173,7 @@ class HTTPSitemapTests(SitemapTestsBase):
Test sitemaps are sorted by lastmod in descending order.
"""
response = self.client.get('/lastmod-sitemaps/descending.xml')
- self.assertEqual(response['Last-Modified'], 'Sat, 20 Apr 2013 05:00:00 GMT')
+ self.assertEqual(response.headers['Last-Modified'], 'Sat, 20 Apr 2013 05:00:00 GMT')
@override_settings(USE_I18N=True, USE_L10N=True)
def test_localized_priority(self):
@@ -243,10 +243,10 @@ class HTTPSitemapTests(SitemapTestsBase):
def test_x_robots_sitemap(self):
response = self.client.get('/simple/index.xml')
- self.assertEqual(response['X-Robots-Tag'], 'noindex, noodp, noarchive')
+ self.assertEqual(response.headers['X-Robots-Tag'], 'noindex, noodp, noarchive')
response = self.client.get('/simple/sitemap.xml')
- self.assertEqual(response['X-Robots-Tag'], 'noindex, noodp, noarchive')
+ self.assertEqual(response.headers['X-Robots-Tag'], 'noindex, noodp, noarchive')
def test_empty_sitemap(self):
response = self.client.get('/empty/sitemap.xml')
diff --git a/tests/syndication_tests/tests.py b/tests/syndication_tests/tests.py
index d9456ed618..b763bba6cb 100644
--- a/tests/syndication_tests/tests.py
+++ b/tests/syndication_tests/tests.py
@@ -421,14 +421,14 @@ class SyndicationFeedTest(FeedTestCase):
Tests the Last-Modified header with naive publication dates.
"""
response = self.client.get('/syndication/naive-dates/')
- self.assertEqual(response['Last-Modified'], 'Tue, 26 Mar 2013 01:00:00 GMT')
+ self.assertEqual(response.headers['Last-Modified'], 'Tue, 26 Mar 2013 01:00:00 GMT')
def test_feed_last_modified_time(self):
"""
Tests the Last-Modified header with aware publication dates.
"""
response = self.client.get('/syndication/aware-dates/')
- self.assertEqual(response['Last-Modified'], 'Mon, 25 Mar 2013 19:18:00 GMT')
+ self.assertEqual(response.headers['Last-Modified'], 'Mon, 25 Mar 2013 19:18:00 GMT')
# No last-modified when feed has no item_pubdate
response = self.client.get('/syndication/no_pubdate/')
diff --git a/tests/template_tests/test_response.py b/tests/template_tests/test_response.py
index cf5e955223..0a51d68f01 100644
--- a/tests/template_tests/test_response.py
+++ b/tests/template_tests/test_response.py
@@ -122,13 +122,13 @@ class SimpleTemplateResponseTest(SimpleTestCase):
def test_kwargs(self):
response = self._response(content_type='application/json', status=504, charset='ascii')
- self.assertEqual(response['content-type'], 'application/json')
+ self.assertEqual(response.headers['content-type'], 'application/json')
self.assertEqual(response.status_code, 504)
self.assertEqual(response.charset, 'ascii')
def test_args(self):
response = SimpleTemplateResponse('', {}, 'application/json', 504)
- self.assertEqual(response['content-type'], 'application/json')
+ self.assertEqual(response.headers['content-type'], 'application/json')
self.assertEqual(response.status_code, 504)
@require_jinja2
@@ -175,7 +175,7 @@ class SimpleTemplateResponseTest(SimpleTestCase):
unpickled_response = pickle.loads(pickled_response)
self.assertEqual(unpickled_response.content, response.content)
- self.assertEqual(unpickled_response['content-type'], response['content-type'])
+ self.assertEqual(unpickled_response.headers['content-type'], response.headers['content-type'])
self.assertEqual(unpickled_response.status_code, response.status_code)
# ...and the unpickled response doesn't have the
@@ -249,13 +249,13 @@ class TemplateResponseTest(SimpleTestCase):
def test_kwargs(self):
response = self._response(content_type='application/json', status=504)
- self.assertEqual(response['content-type'], 'application/json')
+ self.assertEqual(response.headers['content-type'], 'application/json')
self.assertEqual(response.status_code, 504)
def test_args(self):
response = TemplateResponse(self.factory.get('/'), '', {},
'application/json', 504)
- self.assertEqual(response['content-type'], 'application/json')
+ self.assertEqual(response.headers['content-type'], 'application/json')
self.assertEqual(response.status_code, 504)
@require_jinja2
@@ -287,7 +287,7 @@ class TemplateResponseTest(SimpleTestCase):
unpickled_response = pickle.loads(pickled_response)
self.assertEqual(unpickled_response.content, response.content)
- self.assertEqual(unpickled_response['content-type'], response['content-type'])
+ self.assertEqual(unpickled_response.headers['content-type'], response.headers['content-type'])
self.assertEqual(unpickled_response.status_code, response.status_code)
# ...and the unpickled response doesn't have the
diff --git a/tests/test_client/tests.py b/tests/test_client/tests.py
index 03bb658952..f0b7f798a0 100644
--- a/tests/test_client/tests.py
+++ b/tests/test_client/tests.py
@@ -159,7 +159,7 @@ class ClientTest(TestCase):
"Check the value of HTTP headers returned in a response"
response = self.client.get("/header_view/")
- self.assertEqual(response['X-DJANGO-TEST'], 'Slartibartfast')
+ self.assertEqual(response.headers['X-DJANGO-TEST'], 'Slartibartfast')
def test_response_attached_request(self):
"""
diff --git a/tests/test_client/views.py b/tests/test_client/views.py
index 034ca6908c..38fbeae797 100644
--- a/tests/test_client/views.py
+++ b/tests/test_client/views.py
@@ -102,7 +102,7 @@ def json_view(request):
def view_with_header(request):
"A view that has a custom header"
response = HttpResponse()
- response['X-DJANGO-TEST'] = 'Slartibartfast'
+ response.headers['X-DJANGO-TEST'] = 'Slartibartfast'
return response
diff --git a/tests/test_client_regress/tests.py b/tests/test_client_regress/tests.py
index cb6cb4a8ac..91cf23f0cb 100644
--- a/tests/test_client_regress/tests.py
+++ b/tests/test_client_regress/tests.py
@@ -1210,7 +1210,7 @@ class RequestMethodStringDataTests(SimpleTestCase):
)
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.headers['Content-Type'], content_type)
self.assertEqual(response.json(), {'key': 'value'})
def test_json_multiple_access(self):
diff --git a/tests/view_tests/tests/test_debug.py b/tests/view_tests/tests/test_debug.py
index 2337d3ed3d..80f5af89f7 100644
--- a/tests/view_tests/tests/test_debug.py
+++ b/tests/view_tests/tests/test_debug.py
@@ -1481,7 +1481,7 @@ class NonHTMLResponseExceptionReporterFilter(ExceptionReportTestMixin, LoggingCa
@override_settings(DEBUG=True, ROOT_URLCONF='view_tests.urls')
def test_non_html_response_encoding(self):
response = self.client.get('/raises500/', HTTP_ACCEPT='application/json')
- self.assertEqual(response['Content-Type'], 'text/plain; charset=utf-8')
+ self.assertEqual(response.headers['Content-Type'], 'text/plain; charset=utf-8')
class DecoratorsTests(SimpleTestCase):
diff --git a/tests/view_tests/tests/test_i18n.py b/tests/view_tests/tests/test_i18n.py
index fcbffa711d..0ec2bf877e 100644
--- a/tests/view_tests/tests/test_i18n.py
+++ b/tests/view_tests/tests/test_i18n.py
@@ -249,7 +249,7 @@ class I18NViewTests(SimpleTestCase):
catalog = gettext.translation('djangojs', locale_dir, [lang_code])
trans_txt = catalog.gettext('this is to be translated')
response = self.client.get('/jsi18n/')
- self.assertEqual(response['Content-Type'], 'text/javascript; charset="utf-8"')
+ self.assertEqual(response.headers['Content-Type'], 'text/javascript; charset="utf-8"')
# response content must include a line like:
# "this is to be translated": <value of trans_txt Python variable>
# json.dumps() is used to be able to check Unicode strings.
diff --git a/tests/view_tests/tests/test_json.py b/tests/view_tests/tests/test_json.py
index 34e8fa359b..e1074bf630 100644
--- a/tests/view_tests/tests/test_json.py
+++ b/tests/view_tests/tests/test_json.py
@@ -10,7 +10,7 @@ class JsonResponseTests(SimpleTestCase):
response = self.client.get('/json/response/')
self.assertEqual(response.status_code, 200)
self.assertEqual(
- response['content-type'], 'application/json')
+ response.headers['content-type'], 'application/json')
self.assertEqual(json.loads(response.content.decode()), {
'a': [1, 2, 3],
'foo': {'bar': 'baz'},
diff --git a/tests/view_tests/tests/test_static.py b/tests/view_tests/tests/test_static.py
index f4c58e0611..5044aca2d6 100644
--- a/tests/view_tests/tests/test_static.py
+++ b/tests/view_tests/tests/test_static.py
@@ -29,7 +29,7 @@ class StaticTests(SimpleTestCase):
file_path = path.join(media_dir, filename)
with open(file_path, 'rb') as fp:
self.assertEqual(fp.read(), response_content)
- self.assertEqual(len(response_content), int(response['Content-Length']))
+ self.assertEqual(len(response_content), int(response.headers['Content-Length']))
self.assertEqual(mimetypes.guess_type(file_path)[1], response.get('Content-Encoding', None))
def test_chunked(self):
@@ -44,7 +44,7 @@ class StaticTests(SimpleTestCase):
def test_unknown_mime_type(self):
response = self.client.get('/%s/file.unknown' % self.prefix)
- self.assertEqual('application/octet-stream', response['Content-Type'])
+ self.assertEqual('application/octet-stream', response.headers['Content-Type'])
response.close()
def test_copes_with_empty_path_component(self):
@@ -87,7 +87,7 @@ class StaticTests(SimpleTestCase):
response_content = b''.join(response)
with open(path.join(media_dir, file_name), 'rb') as fp:
self.assertEqual(fp.read(), response_content)
- self.assertEqual(len(response_content), int(response['Content-Length']))
+ self.assertEqual(len(response_content), int(response.headers['Content-Length']))
def test_invalid_if_modified_since2(self):
"""Handle even more bogus If-Modified-Since values gracefully
@@ -102,7 +102,7 @@ class StaticTests(SimpleTestCase):
response_content = b''.join(response)
with open(path.join(media_dir, file_name), 'rb') as fp:
self.assertEqual(fp.read(), response_content)
- self.assertEqual(len(response_content), int(response['Content-Length']))
+ self.assertEqual(len(response_content), int(response.headers['Content-Length']))
def test_404(self):
response = self.client.get('/%s/nonexistent_resource' % self.prefix)