mirror of
https://github.com/django/django.git
synced 2025-08-04 19:08:28 +00:00
Fixed #26601 -- Improved middleware per DEP 0005.
Thanks Tim Graham for polishing the patch, updating the tests, and writing documentation. Thanks Carl Meyer for shepherding the DEP.
This commit is contained in:
parent
05c888ffb8
commit
9baf692a58
81 changed files with 900 additions and 1414 deletions
|
@ -9,7 +9,7 @@ from .settings import FLATPAGES_TEMPLATES
|
|||
@modify_settings(INSTALLED_APPS={'append': 'django.contrib.flatpages'})
|
||||
@override_settings(
|
||||
LOGIN_URL='/accounts/login/',
|
||||
MIDDLEWARE_CLASSES=[
|
||||
MIDDLEWARE=[
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'django.middleware.csrf.CsrfViewMiddleware',
|
||||
|
@ -97,3 +97,18 @@ class FlatpageCSRFTests(TestCase):
|
|||
"POSTing to an unknown page isn't caught as a 403 CSRF error"
|
||||
response = self.client.post('/no_such_page/')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
|
||||
@override_settings(
|
||||
MIDDLEWARE=None,
|
||||
MIDDLEWARE_CLASSES=[
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'django.middleware.csrf.CsrfViewMiddleware',
|
||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||
'django.contrib.messages.middleware.MessageMiddleware',
|
||||
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
|
||||
],
|
||||
)
|
||||
class FlatpageCSRFMiddlewareClassesTests(FlatpageCSRFTests):
|
||||
pass
|
||||
|
|
|
@ -47,18 +47,36 @@ class FlatpageAdminFormTests(TestCase):
|
|||
self.assertFalse(form.is_valid())
|
||||
self.assertEqual(form.errors['url'], ["URL is missing a leading slash."])
|
||||
|
||||
@override_settings(APPEND_SLASH=True, MIDDLEWARE_CLASSES=['django.middleware.common.CommonMiddleware'])
|
||||
@override_settings(APPEND_SLASH=True, MIDDLEWARE=['django.middleware.common.CommonMiddleware'])
|
||||
def test_flatpage_requires_trailing_slash_with_append_slash(self):
|
||||
form = FlatpageForm(data=dict(url='/no_trailing_slash', **self.form_data))
|
||||
with translation.override('en'):
|
||||
self.assertFalse(form.is_valid())
|
||||
self.assertEqual(form.errors['url'], ["URL is missing a trailing slash."])
|
||||
|
||||
@override_settings(APPEND_SLASH=False, MIDDLEWARE_CLASSES=['django.middleware.common.CommonMiddleware'])
|
||||
@override_settings(APPEND_SLASH=False, MIDDLEWARE=['django.middleware.common.CommonMiddleware'])
|
||||
def test_flatpage_doesnt_requires_trailing_slash_without_append_slash(self):
|
||||
form = FlatpageForm(data=dict(url='/no_trailing_slash', **self.form_data))
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
@override_settings(
|
||||
APPEND_SLASH=True, MIDDLEWARE=None,
|
||||
MIDDLEWARE_CLASSES=['django.middleware.common.CommonMiddleware'],
|
||||
)
|
||||
def test_flatpage_requires_trailing_slash_with_append_slash_middleware_classes(self):
|
||||
form = FlatpageForm(data=dict(url='/no_trailing_slash', **self.form_data))
|
||||
with translation.override('en'):
|
||||
self.assertFalse(form.is_valid())
|
||||
self.assertEqual(form.errors['url'], ["URL is missing a trailing slash."])
|
||||
|
||||
@override_settings(
|
||||
APPEND_SLASH=False, MIDDLEWARE=None,
|
||||
MIDDLEWARE_CLASSES=['django.middleware.common.CommonMiddleware'],
|
||||
)
|
||||
def test_flatpage_doesnt_requires_trailing_slash_without_append_slash_middleware_classes(self):
|
||||
form = FlatpageForm(data=dict(url='/no_trailing_slash', **self.form_data))
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
def test_flatpage_admin_form_url_uniqueness_validation(self):
|
||||
"The flatpage admin form correctly enforces url uniqueness among flatpages of the same site"
|
||||
data = dict(url='/myflatpage1/', **self.form_data)
|
||||
|
|
|
@ -40,7 +40,7 @@ class TestDataMixin(object):
|
|||
@modify_settings(INSTALLED_APPS={'append': 'django.contrib.flatpages'})
|
||||
@override_settings(
|
||||
LOGIN_URL='/accounts/login/',
|
||||
MIDDLEWARE_CLASSES=[
|
||||
MIDDLEWARE=[
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'django.middleware.csrf.CsrfViewMiddleware',
|
||||
|
@ -107,11 +107,26 @@ class FlatpageMiddlewareTests(TestDataMixin, TestCase):
|
|||
self.assertContains(response, "<p>Isn't it special!</p>")
|
||||
|
||||
|
||||
@override_settings(
|
||||
MIDDLEWARE=None,
|
||||
MIDDLEWARE_CLASSES=[
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'django.middleware.csrf.CsrfViewMiddleware',
|
||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||
'django.contrib.messages.middleware.MessageMiddleware',
|
||||
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
|
||||
],
|
||||
)
|
||||
class FlatpageMiddlewareClassesTests(FlatpageMiddlewareTests):
|
||||
pass
|
||||
|
||||
|
||||
@modify_settings(INSTALLED_APPS={'append': 'django.contrib.flatpages'})
|
||||
@override_settings(
|
||||
APPEND_SLASH=True,
|
||||
LOGIN_URL='/accounts/login/',
|
||||
MIDDLEWARE_CLASSES=[
|
||||
MIDDLEWARE=[
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'django.middleware.csrf.CsrfViewMiddleware',
|
||||
|
@ -172,3 +187,18 @@ class FlatpageMiddlewareAppendSlashTests(TestDataMixin, TestCase):
|
|||
|
||||
response = self.client.get('/')
|
||||
self.assertContains(response, "<p>Root</p>")
|
||||
|
||||
|
||||
@override_settings(
|
||||
MIDDLEWARE=None,
|
||||
MIDDLEWARE_CLASSES=[
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'django.middleware.csrf.CsrfViewMiddleware',
|
||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||
'django.contrib.messages.middleware.MessageMiddleware',
|
||||
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
|
||||
],
|
||||
)
|
||||
class FlatpageAppendSlashMiddlewareClassesTests(FlatpageMiddlewareAppendSlashTests):
|
||||
pass
|
||||
|
|
|
@ -2,25 +2,9 @@ from django.contrib.auth.models import AnonymousUser, User
|
|||
from django.contrib.flatpages.models import FlatPage
|
||||
from django.contrib.sites.models import Site
|
||||
from django.template import Context, Template, TemplateSyntaxError
|
||||
from django.test import TestCase, modify_settings, override_settings
|
||||
|
||||
from .settings import FLATPAGES_TEMPLATES
|
||||
from django.test import TestCase
|
||||
|
||||
|
||||
@modify_settings(INSTALLED_APPS={'append': 'django.contrib.flatpages'})
|
||||
@override_settings(
|
||||
MIDDLEWARE_CLASSES=[
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'django.middleware.csrf.CsrfViewMiddleware',
|
||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||
'django.contrib.messages.middleware.MessageMiddleware',
|
||||
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
|
||||
],
|
||||
ROOT_URLCONF='flatpages_tests.urls',
|
||||
TEMPLATES=FLATPAGES_TEMPLATES,
|
||||
SITE_ID=1,
|
||||
)
|
||||
class FlatpageTemplateTagTests(TestCase):
|
||||
|
||||
@classmethod
|
||||
|
|
|
@ -40,7 +40,7 @@ class TestDataMixin(object):
|
|||
@modify_settings(INSTALLED_APPS={'append': 'django.contrib.flatpages'})
|
||||
@override_settings(
|
||||
LOGIN_URL='/accounts/login/',
|
||||
MIDDLEWARE_CLASSES=[
|
||||
MIDDLEWARE=[
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'django.middleware.csrf.CsrfViewMiddleware',
|
||||
|
@ -102,7 +102,7 @@ class FlatpageViewTests(TestDataMixin, TestCase):
|
|||
@override_settings(
|
||||
APPEND_SLASH=True,
|
||||
LOGIN_URL='/accounts/login/',
|
||||
MIDDLEWARE_CLASSES=[
|
||||
MIDDLEWARE=[
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'django.middleware.csrf.CsrfViewMiddleware',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue