Refs #26601 -- Added various middlewares tests for deprecation of passing None as get_response.
This commit is contained in:
parent
abbdd3a622
commit
68d7cf4054
|
@ -2,14 +2,29 @@ import threading
|
||||||
|
|
||||||
from asgiref.sync import async_to_sync
|
from asgiref.sync import async_to_sync
|
||||||
|
|
||||||
|
from django.contrib.admindocs.middleware import XViewMiddleware
|
||||||
|
from django.contrib.auth.middleware import (
|
||||||
|
AuthenticationMiddleware, RemoteUserMiddleware,
|
||||||
|
)
|
||||||
|
from django.contrib.flatpages.middleware import FlatpageFallbackMiddleware
|
||||||
|
from django.contrib.messages.middleware import MessageMiddleware
|
||||||
|
from django.contrib.redirects.middleware import RedirectFallbackMiddleware
|
||||||
from django.contrib.sessions.middleware import SessionMiddleware
|
from django.contrib.sessions.middleware import SessionMiddleware
|
||||||
|
from django.contrib.sites.middleware import CurrentSiteMiddleware
|
||||||
from django.db import connection
|
from django.db import connection
|
||||||
from django.http.request import HttpRequest
|
from django.http.request import HttpRequest
|
||||||
from django.http.response import HttpResponse
|
from django.http.response import HttpResponse
|
||||||
from django.middleware.cache import (
|
from django.middleware.cache import (
|
||||||
CacheMiddleware, FetchFromCacheMiddleware, UpdateCacheMiddleware,
|
CacheMiddleware, FetchFromCacheMiddleware, UpdateCacheMiddleware,
|
||||||
)
|
)
|
||||||
from django.middleware.common import CommonMiddleware
|
from django.middleware.clickjacking import XFrameOptionsMiddleware
|
||||||
|
from django.middleware.common import (
|
||||||
|
BrokenLinkEmailsMiddleware, CommonMiddleware,
|
||||||
|
)
|
||||||
|
from django.middleware.csrf import CsrfViewMiddleware
|
||||||
|
from django.middleware.gzip import GZipMiddleware
|
||||||
|
from django.middleware.http import ConditionalGetMiddleware
|
||||||
|
from django.middleware.locale import LocaleMiddleware
|
||||||
from django.middleware.security import SecurityMiddleware
|
from django.middleware.security import SecurityMiddleware
|
||||||
from django.test import SimpleTestCase
|
from django.test import SimpleTestCase
|
||||||
from django.utils.deprecation import MiddlewareMixin, RemovedInDjango40Warning
|
from django.utils.deprecation import MiddlewareMixin, RemovedInDjango40Warning
|
||||||
|
@ -20,31 +35,40 @@ class MiddlewareMixinTests(SimpleTestCase):
|
||||||
Deprecation warning is raised when using get_response=None.
|
Deprecation warning is raised when using get_response=None.
|
||||||
"""
|
"""
|
||||||
msg = 'Passing None for the middleware get_response argument is deprecated.'
|
msg = 'Passing None for the middleware get_response argument is deprecated.'
|
||||||
|
middlewares = [
|
||||||
|
AuthenticationMiddleware,
|
||||||
|
BrokenLinkEmailsMiddleware,
|
||||||
|
CacheMiddleware,
|
||||||
|
CommonMiddleware,
|
||||||
|
ConditionalGetMiddleware,
|
||||||
|
CsrfViewMiddleware,
|
||||||
|
CurrentSiteMiddleware,
|
||||||
|
FetchFromCacheMiddleware,
|
||||||
|
FlatpageFallbackMiddleware,
|
||||||
|
GZipMiddleware,
|
||||||
|
LocaleMiddleware,
|
||||||
|
MessageMiddleware,
|
||||||
|
RedirectFallbackMiddleware,
|
||||||
|
RemoteUserMiddleware,
|
||||||
|
SecurityMiddleware,
|
||||||
|
SessionMiddleware,
|
||||||
|
UpdateCacheMiddleware,
|
||||||
|
XFrameOptionsMiddleware,
|
||||||
|
XViewMiddleware,
|
||||||
|
]
|
||||||
|
|
||||||
def test_deprecation(self):
|
def test_deprecation(self):
|
||||||
with self.assertRaisesMessage(RemovedInDjango40Warning, self.msg):
|
for middleware in self.middlewares:
|
||||||
CommonMiddleware()
|
|
||||||
|
|
||||||
def test_passing_explicit_none(self):
|
|
||||||
with self.assertRaisesMessage(RemovedInDjango40Warning, self.msg):
|
|
||||||
CommonMiddleware(None)
|
|
||||||
|
|
||||||
def test_subclass_deprecation(self):
|
|
||||||
"""
|
|
||||||
Deprecation warning is raised in subclasses overriding __init__()
|
|
||||||
without calling super().
|
|
||||||
"""
|
|
||||||
for middleware in [
|
|
||||||
SessionMiddleware,
|
|
||||||
CacheMiddleware,
|
|
||||||
FetchFromCacheMiddleware,
|
|
||||||
UpdateCacheMiddleware,
|
|
||||||
SecurityMiddleware,
|
|
||||||
]:
|
|
||||||
with self.subTest(middleware=middleware):
|
with self.subTest(middleware=middleware):
|
||||||
with self.assertRaisesMessage(RemovedInDjango40Warning, self.msg):
|
with self.assertRaisesMessage(RemovedInDjango40Warning, self.msg):
|
||||||
middleware()
|
middleware()
|
||||||
|
|
||||||
|
def test_passing_explicit_none(self):
|
||||||
|
for middleware in self.middlewares:
|
||||||
|
with self.subTest(middleware=middleware):
|
||||||
|
with self.assertRaisesMessage(RemovedInDjango40Warning, self.msg):
|
||||||
|
middleware(None)
|
||||||
|
|
||||||
def test_sync_to_async_uses_base_thread_and_connection(self):
|
def test_sync_to_async_uses_base_thread_and_connection(self):
|
||||||
"""
|
"""
|
||||||
The process_request() and process_response() hooks must be called with
|
The process_request() and process_response() hooks must be called with
|
||||||
|
|
|
@ -90,8 +90,9 @@ ALWAYS_MIDDLEWARE = [
|
||||||
# avoid "RuntimeError: Model class X doesn't declare an explicit app_label
|
# avoid "RuntimeError: Model class X doesn't declare an explicit app_label
|
||||||
# and isn't in an application in INSTALLED_APPS."
|
# and isn't in an application in INSTALLED_APPS."
|
||||||
CONTRIB_TESTS_TO_APPS = {
|
CONTRIB_TESTS_TO_APPS = {
|
||||||
'flatpages_tests': 'django.contrib.flatpages',
|
'deprecation': ['django.contrib.flatpages', 'django.contrib.redirects'],
|
||||||
'redirects_tests': 'django.contrib.redirects',
|
'flatpages_tests': ['django.contrib.flatpages'],
|
||||||
|
'redirects_tests': ['django.contrib.redirects'],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -228,7 +229,9 @@ def setup(verbosity, test_labels, parallel, start_at, start_after):
|
||||||
)
|
)
|
||||||
|
|
||||||
if module_name in CONTRIB_TESTS_TO_APPS and module_found_in_labels:
|
if module_name in CONTRIB_TESTS_TO_APPS and module_found_in_labels:
|
||||||
settings.INSTALLED_APPS.append(CONTRIB_TESTS_TO_APPS[module_name])
|
for contrib_app in CONTRIB_TESTS_TO_APPS[module_name]:
|
||||||
|
if contrib_app not in settings.INSTALLED_APPS:
|
||||||
|
settings.INSTALLED_APPS.append(contrib_app)
|
||||||
|
|
||||||
if module_found_in_labels and module_label not in installed_app_names:
|
if module_found_in_labels and module_label not in installed_app_names:
|
||||||
if verbosity >= 2:
|
if verbosity >= 2:
|
||||||
|
|
Loading…
Reference in New Issue