from django.contrib.sessions.middleware import SessionMiddleware from django.middleware.cache import ( CacheMiddleware, FetchFromCacheMiddleware, UpdateCacheMiddleware, ) from django.middleware.common import CommonMiddleware from django.middleware.security import SecurityMiddleware from django.test import SimpleTestCase from django.utils.deprecation import RemovedInDjango40Warning class MiddlewareMixinTests(SimpleTestCase): """ Deprecation warning is raised when using get_response=None. """ msg = 'Passing None for the middleware get_response argument is deprecated.' def test_deprecation(self): with self.assertRaisesMessage(RemovedInDjango40Warning, self.msg): 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.assertRaisesMessage(RemovedInDjango40Warning, self.msg): middleware()