mirror of
https://github.com/django/django.git
synced 2025-08-19 10:10:42 +00:00
[1.8.x] Moved contrib.flatpages tests out of contrib.
Backport of d3a725054f
from master
This commit is contained in:
parent
a0553d1a7c
commit
36bf6ec9eb
17 changed files with 40 additions and 26 deletions
|
@ -1,11 +0,0 @@
|
|||
[
|
||||
{
|
||||
"pk": 1,
|
||||
"model": "sites.site",
|
||||
"fields": {
|
||||
"domain": "example.com",
|
||||
"name": "example.com"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
[
|
||||
{
|
||||
"pk": 1,
|
||||
"model": "flatpages.flatpage",
|
||||
"fields": {
|
||||
"registration_required": false,
|
||||
"title": "A Flatpage",
|
||||
"url": "/flatpage/",
|
||||
"template_name": "",
|
||||
"sites": [
|
||||
1
|
||||
],
|
||||
"content": "Isn't it flat!",
|
||||
"enable_comments": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"pk": 2,
|
||||
"model": "flatpages.flatpage",
|
||||
"fields": {
|
||||
"registration_required": false,
|
||||
"title": "A Nested Flatpage",
|
||||
"url": "/location/flatpage/",
|
||||
"template_name": "",
|
||||
"sites": [
|
||||
1
|
||||
],
|
||||
"content": "Isn't it flat and deep!",
|
||||
"enable_comments": false
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"pk": 101,
|
||||
"model": "flatpages.flatpage",
|
||||
"fields": {
|
||||
"registration_required": true,
|
||||
"title": "Sekrit Flatpage",
|
||||
"url": "/sekrit/",
|
||||
"template_name": "",
|
||||
"sites": [
|
||||
1
|
||||
],
|
||||
"content": "Isn't it sekrit!",
|
||||
"enable_comments": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"pk": 102,
|
||||
"model": "flatpages.flatpage",
|
||||
"fields": {
|
||||
"registration_required": true,
|
||||
"title": "Sekrit Nested Flatpage",
|
||||
"url": "/location/sekrit/",
|
||||
"template_name": "",
|
||||
"sites": [
|
||||
1
|
||||
],
|
||||
"content": "Isn't it sekrit and deep!",
|
||||
"enable_comments": false
|
||||
}
|
||||
}
|
||||
]
|
|
@ -1,11 +0,0 @@
|
|||
import os
|
||||
|
||||
FLATPAGES_TEMPLATES = [{
|
||||
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||
'DIRS': [os.path.join(os.path.dirname(__file__), 'templates')],
|
||||
'OPTIONS': {
|
||||
'context_processors': (
|
||||
'django.contrib.auth.context_processors.auth',
|
||||
),
|
||||
},
|
||||
}]
|
|
@ -1 +0,0 @@
|
|||
<h1>Oh Noes!</h1>
|
|
@ -1,9 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>{{ flatpage.title }}</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>{{ flatpage.content }}</p>
|
||||
</body>
|
||||
</html>
|
|
@ -1,75 +0,0 @@
|
|||
from django.contrib.auth.models import User
|
||||
from django.contrib.auth.tests.utils import skipIfCustomUser
|
||||
from django.test import Client, TestCase, override_settings
|
||||
|
||||
from .settings import FLATPAGES_TEMPLATES
|
||||
|
||||
|
||||
@override_settings(
|
||||
LOGIN_URL='/accounts/login/',
|
||||
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='django.contrib.flatpages.tests.urls',
|
||||
CSRF_FAILURE_VIEW='django.views.csrf.csrf_failure',
|
||||
TEMPLATES=FLATPAGES_TEMPLATES,
|
||||
SITE_ID=1,
|
||||
)
|
||||
class FlatpageCSRFTests(TestCase):
|
||||
fixtures = ['sample_flatpages', 'example_site']
|
||||
|
||||
def setUp(self):
|
||||
self.client = Client(enforce_csrf_checks=True)
|
||||
|
||||
def test_view_flatpage(self):
|
||||
"A flatpage can be served through a view, even when the middleware is in use"
|
||||
response = self.client.get('/flatpage_root/flatpage/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, "<p>Isn't it flat!</p>")
|
||||
|
||||
def test_view_non_existent_flatpage(self):
|
||||
"A non-existent flatpage raises 404 when served through a view, even when the middleware is in use"
|
||||
response = self.client.get('/flatpage_root/no_such_flatpage/')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
@skipIfCustomUser
|
||||
def test_view_authenticated_flatpage(self):
|
||||
"A flatpage served through a view can require authentication"
|
||||
response = self.client.get('/flatpage_root/sekrit/')
|
||||
self.assertRedirects(response, '/accounts/login/?next=/flatpage_root/sekrit/')
|
||||
User.objects.create_user('testuser', 'test@example.com', 's3krit')
|
||||
self.client.login(username='testuser', password='s3krit')
|
||||
response = self.client.get('/flatpage_root/sekrit/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, "<p>Isn't it sekrit!</p>")
|
||||
|
||||
def test_fallback_flatpage(self):
|
||||
"A flatpage can be served by the fallback middleware"
|
||||
response = self.client.get('/flatpage/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, "<p>Isn't it flat!</p>")
|
||||
|
||||
def test_fallback_non_existent_flatpage(self):
|
||||
"A non-existent flatpage raises a 404 when served by the fallback middleware"
|
||||
response = self.client.get('/no_such_flatpage/')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
def test_post_view_flatpage(self):
|
||||
"POSTing to a flatpage served through a view will raise a CSRF error if no token is provided (Refs #14156)"
|
||||
response = self.client.post('/flatpage_root/flatpage/')
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
def test_post_fallback_flatpage(self):
|
||||
"POSTing to a flatpage served by the middleware will raise a CSRF error if no token is provided (Refs #14156)"
|
||||
response = self.client.post('/flatpage/')
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
def test_post_unknown_page(self):
|
||||
"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)
|
|
@ -1,98 +0,0 @@
|
|||
from __future__ import unicode_literals
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.flatpages.forms import FlatpageForm
|
||||
from django.contrib.flatpages.models import FlatPage
|
||||
from django.test import TestCase, override_settings
|
||||
from django.utils import translation
|
||||
|
||||
|
||||
@override_settings(SITE_ID=1)
|
||||
class FlatpageAdminFormTests(TestCase):
|
||||
fixtures = ['example_site']
|
||||
|
||||
def setUp(self):
|
||||
self.form_data = {
|
||||
'title': "A test page",
|
||||
'content': "This is a test",
|
||||
'sites': [settings.SITE_ID],
|
||||
}
|
||||
|
||||
def test_flatpage_admin_form_url_validation(self):
|
||||
"The flatpage admin form correctly validates urls"
|
||||
self.assertTrue(FlatpageForm(data=dict(url='/new_flatpage/', **self.form_data)).is_valid())
|
||||
self.assertTrue(FlatpageForm(data=dict(url='/some.special~chars/', **self.form_data)).is_valid())
|
||||
self.assertTrue(FlatpageForm(data=dict(url='/some.very_special~chars-here/', **self.form_data)).is_valid())
|
||||
|
||||
self.assertFalse(FlatpageForm(data=dict(url='/a space/', **self.form_data)).is_valid())
|
||||
self.assertFalse(FlatpageForm(data=dict(url='/a % char/', **self.form_data)).is_valid())
|
||||
self.assertFalse(FlatpageForm(data=dict(url='/a ! char/', **self.form_data)).is_valid())
|
||||
self.assertFalse(FlatpageForm(data=dict(url='/a & char/', **self.form_data)).is_valid())
|
||||
self.assertFalse(FlatpageForm(data=dict(url='/a ? char/', **self.form_data)).is_valid())
|
||||
|
||||
def test_flatpage_requires_leading_slash(self):
|
||||
form = FlatpageForm(data=dict(url='no_leading_slash/', **self.form_data))
|
||||
with translation.override('en'):
|
||||
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',))
|
||||
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',))
|
||||
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())
|
||||
|
||||
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)
|
||||
|
||||
FlatpageForm(data=data).save()
|
||||
|
||||
f = FlatpageForm(data=data)
|
||||
|
||||
with translation.override('en'):
|
||||
self.assertFalse(f.is_valid())
|
||||
|
||||
self.assertEqual(
|
||||
f.errors,
|
||||
{'__all__': ['Flatpage with url /myflatpage1/ already exists for site example.com']})
|
||||
|
||||
def test_flatpage_admin_form_edit(self):
|
||||
"""
|
||||
Existing flatpages can be edited in the admin form without triggering
|
||||
the url-uniqueness validation.
|
||||
|
||||
"""
|
||||
existing = FlatPage.objects.create(
|
||||
url="/myflatpage1/", title="Some page", content="The content")
|
||||
existing.sites.add(settings.SITE_ID)
|
||||
|
||||
data = dict(url='/myflatpage1/', **self.form_data)
|
||||
|
||||
f = FlatpageForm(data=data, instance=existing)
|
||||
|
||||
self.assertTrue(f.is_valid(), f.errors)
|
||||
|
||||
updated = f.save()
|
||||
|
||||
self.assertEqual(updated.title, "A test page")
|
||||
|
||||
def test_flatpage_nosites(self):
|
||||
data = dict(url='/myflatpage1/', **self.form_data)
|
||||
data.update({'sites': ''})
|
||||
|
||||
f = FlatpageForm(data=data)
|
||||
|
||||
self.assertFalse(f.is_valid())
|
||||
|
||||
self.assertEqual(
|
||||
f.errors,
|
||||
{'sites': [translation.ugettext('This field is required.')]})
|
|
@ -1,152 +0,0 @@
|
|||
from django.conf import settings
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.auth.tests.utils import skipIfCustomUser
|
||||
from django.contrib.flatpages.models import FlatPage
|
||||
from django.test import TestCase, override_settings
|
||||
|
||||
from .settings import FLATPAGES_TEMPLATES
|
||||
|
||||
|
||||
@override_settings(
|
||||
LOGIN_URL='/accounts/login/',
|
||||
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='django.contrib.flatpages.tests.urls',
|
||||
TEMPLATES=FLATPAGES_TEMPLATES,
|
||||
SITE_ID=1,
|
||||
)
|
||||
class FlatpageMiddlewareTests(TestCase):
|
||||
fixtures = ['sample_flatpages', 'example_site']
|
||||
|
||||
def test_view_flatpage(self):
|
||||
"A flatpage can be served through a view, even when the middleware is in use"
|
||||
response = self.client.get('/flatpage_root/flatpage/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, "<p>Isn't it flat!</p>")
|
||||
|
||||
def test_view_non_existent_flatpage(self):
|
||||
"A non-existent flatpage raises 404 when served through a view, even when the middleware is in use"
|
||||
response = self.client.get('/flatpage_root/no_such_flatpage/')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
@skipIfCustomUser
|
||||
def test_view_authenticated_flatpage(self):
|
||||
"A flatpage served through a view can require authentication"
|
||||
response = self.client.get('/flatpage_root/sekrit/')
|
||||
self.assertRedirects(response, '/accounts/login/?next=/flatpage_root/sekrit/')
|
||||
User.objects.create_user('testuser', 'test@example.com', 's3krit')
|
||||
self.client.login(username='testuser', password='s3krit')
|
||||
response = self.client.get('/flatpage_root/sekrit/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, "<p>Isn't it sekrit!</p>")
|
||||
|
||||
def test_fallback_flatpage(self):
|
||||
"A flatpage can be served by the fallback middleware"
|
||||
response = self.client.get('/flatpage/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, "<p>Isn't it flat!</p>")
|
||||
|
||||
def test_fallback_non_existent_flatpage(self):
|
||||
"A non-existent flatpage raises a 404 when served by the fallback middleware"
|
||||
response = self.client.get('/no_such_flatpage/')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
@skipIfCustomUser
|
||||
def test_fallback_authenticated_flatpage(self):
|
||||
"A flatpage served by the middleware can require authentication"
|
||||
response = self.client.get('/sekrit/')
|
||||
self.assertRedirects(response, '/accounts/login/?next=/sekrit/')
|
||||
User.objects.create_user('testuser', 'test@example.com', 's3krit')
|
||||
self.client.login(username='testuser', password='s3krit')
|
||||
response = self.client.get('/sekrit/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, "<p>Isn't it sekrit!</p>")
|
||||
|
||||
def test_fallback_flatpage_special_chars(self):
|
||||
"A flatpage with special chars in the URL can be served by the fallback middleware"
|
||||
fp = FlatPage.objects.create(
|
||||
url="/some.very_special~chars-here/",
|
||||
title="A very special page",
|
||||
content="Isn't it special!",
|
||||
enable_comments=False,
|
||||
registration_required=False,
|
||||
)
|
||||
fp.sites.add(settings.SITE_ID)
|
||||
|
||||
response = self.client.get('/some.very_special~chars-here/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, "<p>Isn't it special!</p>")
|
||||
|
||||
|
||||
@override_settings(
|
||||
APPEND_SLASH=True,
|
||||
LOGIN_URL='/accounts/login/',
|
||||
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='django.contrib.flatpages.tests.urls',
|
||||
TEMPLATES=FLATPAGES_TEMPLATES,
|
||||
SITE_ID=1,
|
||||
)
|
||||
class FlatpageMiddlewareAppendSlashTests(TestCase):
|
||||
fixtures = ['sample_flatpages', 'example_site']
|
||||
|
||||
def test_redirect_view_flatpage(self):
|
||||
"A flatpage can be served through a view and should add a slash"
|
||||
response = self.client.get('/flatpage_root/flatpage')
|
||||
self.assertRedirects(response, '/flatpage_root/flatpage/', status_code=301)
|
||||
|
||||
def test_redirect_view_non_existent_flatpage(self):
|
||||
"A non-existent flatpage raises 404 when served through a view and should not add a slash"
|
||||
response = self.client.get('/flatpage_root/no_such_flatpage')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
def test_redirect_fallback_flatpage(self):
|
||||
"A flatpage can be served by the fallback middleware and should add a slash"
|
||||
response = self.client.get('/flatpage')
|
||||
self.assertRedirects(response, '/flatpage/', status_code=301)
|
||||
|
||||
def test_redirect_fallback_non_existent_flatpage(self):
|
||||
"A non-existent flatpage raises a 404 when served by the fallback middleware and should not add a slash"
|
||||
response = self.client.get('/no_such_flatpage')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
def test_redirect_fallback_flatpage_special_chars(self):
|
||||
"A flatpage with special chars in the URL can be served by the fallback middleware and should add a slash"
|
||||
fp = FlatPage.objects.create(
|
||||
url="/some.very_special~chars-here/",
|
||||
title="A very special page",
|
||||
content="Isn't it special!",
|
||||
enable_comments=False,
|
||||
registration_required=False,
|
||||
)
|
||||
fp.sites.add(settings.SITE_ID)
|
||||
|
||||
response = self.client.get('/some.very_special~chars-here')
|
||||
self.assertRedirects(response, '/some.very_special~chars-here/', status_code=301)
|
||||
|
||||
def test_redirect_fallback_flatpage_root(self):
|
||||
"A flatpage at / should not cause a redirect loop when APPEND_SLASH is set"
|
||||
fp = FlatPage.objects.create(
|
||||
url="/",
|
||||
title="Root",
|
||||
content="Root",
|
||||
enable_comments=False,
|
||||
registration_required=False,
|
||||
)
|
||||
fp.sites.add(settings.SITE_ID)
|
||||
|
||||
response = self.client.get('/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, "<p>Root</p>")
|
|
@ -1,22 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.contrib.flatpages.models import FlatPage
|
||||
from django.core.urlresolvers import clear_script_prefix, set_script_prefix
|
||||
from django.test import TestCase
|
||||
|
||||
|
||||
class FlatpageModelTests(TestCase):
|
||||
|
||||
def test_get_absolute_url_urlencodes(self):
|
||||
pf = FlatPage(title="Café!", url='/café/')
|
||||
self.assertEqual(pf.get_absolute_url(), '/caf%C3%A9/')
|
||||
|
||||
def test_get_absolute_url_honors_script_prefix(self):
|
||||
pf = FlatPage(title="Tea!", url='/tea/')
|
||||
set_script_prefix('/beverages/')
|
||||
try:
|
||||
self.assertEqual(pf.get_absolute_url(), '/beverages/tea/')
|
||||
finally:
|
||||
clear_script_prefix()
|
|
@ -1,33 +0,0 @@
|
|||
from __future__ import unicode_literals
|
||||
|
||||
from django.apps import apps
|
||||
from django.contrib.sites.models import Site
|
||||
from django.test import TestCase
|
||||
from django.test.utils import modify_settings, override_settings
|
||||
|
||||
|
||||
@override_settings(
|
||||
ROOT_URLCONF='django.contrib.flatpages.tests.urls',
|
||||
SITE_ID=1,
|
||||
)
|
||||
@modify_settings(INSTALLED_APPS={'append': ['django.contrib.sitemaps']},)
|
||||
class FlatpagesSitemapTests(TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(FlatpagesSitemapTests, cls).setUpClass()
|
||||
# This cleanup is necessary because contrib.sites cache
|
||||
# makes tests interfere with each other, see #11505
|
||||
Site.objects.clear_cache()
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
Site = apps.get_model('sites.Site')
|
||||
current_site = Site.objects.get_current()
|
||||
current_site.flatpage_set.create(url="/foo/", title="foo")
|
||||
current_site.flatpage_set.create(url="/private-foo/", title="private foo", registration_required=True)
|
||||
|
||||
def test_flatpage_sitemap(self):
|
||||
response = self.client.get('/flatpages/sitemap.xml')
|
||||
self.assertIn(b'<url><loc>http://example.com/foo/</loc></url>', response.getvalue())
|
||||
self.assertNotIn(b'<url><loc>http://example.com/private-foo/</loc></url>', response.getvalue())
|
|
@ -1,133 +0,0 @@
|
|||
from django.contrib.auth.models import AnonymousUser, User
|
||||
from django.contrib.auth.tests.utils import skipIfCustomUser
|
||||
from django.template import Context, Template, TemplateSyntaxError
|
||||
from django.test import TestCase, override_settings
|
||||
|
||||
from .settings import FLATPAGES_TEMPLATES
|
||||
|
||||
|
||||
@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='django.contrib.flatpages.tests.urls',
|
||||
TEMPLATES=FLATPAGES_TEMPLATES,
|
||||
SITE_ID=1,
|
||||
)
|
||||
class FlatpageTemplateTagTests(TestCase):
|
||||
fixtures = ['sample_flatpages']
|
||||
|
||||
def test_get_flatpages_tag(self):
|
||||
"The flatpage template tag retrives unregistered prefixed flatpages by default"
|
||||
out = Template(
|
||||
"{% load flatpages %}"
|
||||
"{% get_flatpages as flatpages %}"
|
||||
"{% for page in flatpages %}"
|
||||
"{{ page.title }},"
|
||||
"{% endfor %}"
|
||||
).render(Context())
|
||||
self.assertEqual(out, "A Flatpage,A Nested Flatpage,")
|
||||
|
||||
def test_get_flatpages_tag_for_anon_user(self):
|
||||
"The flatpage template tag retrives unregistered flatpages for an anonymous user"
|
||||
out = Template(
|
||||
"{% load flatpages %}"
|
||||
"{% get_flatpages for anonuser as flatpages %}"
|
||||
"{% for page in flatpages %}"
|
||||
"{{ page.title }},"
|
||||
"{% endfor %}"
|
||||
).render(Context({
|
||||
'anonuser': AnonymousUser()
|
||||
}))
|
||||
self.assertEqual(out, "A Flatpage,A Nested Flatpage,")
|
||||
|
||||
@skipIfCustomUser
|
||||
def test_get_flatpages_tag_for_user(self):
|
||||
"The flatpage template tag retrives all flatpages for an authenticated user"
|
||||
me = User.objects.create_user('testuser', 'test@example.com', 's3krit')
|
||||
out = Template(
|
||||
"{% load flatpages %}"
|
||||
"{% get_flatpages for me as flatpages %}"
|
||||
"{% for page in flatpages %}"
|
||||
"{{ page.title }},"
|
||||
"{% endfor %}"
|
||||
).render(Context({
|
||||
'me': me
|
||||
}))
|
||||
self.assertEqual(out, "A Flatpage,A Nested Flatpage,Sekrit Nested Flatpage,Sekrit Flatpage,")
|
||||
|
||||
def test_get_flatpages_with_prefix(self):
|
||||
"The flatpage template tag retrives unregistered prefixed flatpages by default"
|
||||
out = Template(
|
||||
"{% load flatpages %}"
|
||||
"{% get_flatpages '/location/' as location_flatpages %}"
|
||||
"{% for page in location_flatpages %}"
|
||||
"{{ page.title }},"
|
||||
"{% endfor %}"
|
||||
).render(Context())
|
||||
self.assertEqual(out, "A Nested Flatpage,")
|
||||
|
||||
def test_get_flatpages_with_prefix_for_anon_user(self):
|
||||
"The flatpage template tag retrives unregistered prefixed flatpages for an anonymous user"
|
||||
out = Template(
|
||||
"{% load flatpages %}"
|
||||
"{% get_flatpages '/location/' for anonuser as location_flatpages %}"
|
||||
"{% for page in location_flatpages %}"
|
||||
"{{ page.title }},"
|
||||
"{% endfor %}"
|
||||
).render(Context({
|
||||
'anonuser': AnonymousUser()
|
||||
}))
|
||||
self.assertEqual(out, "A Nested Flatpage,")
|
||||
|
||||
@skipIfCustomUser
|
||||
def test_get_flatpages_with_prefix_for_user(self):
|
||||
"The flatpage template tag retrieve prefixed flatpages for an authenticated user"
|
||||
me = User.objects.create_user('testuser', 'test@example.com', 's3krit')
|
||||
out = Template(
|
||||
"{% load flatpages %}"
|
||||
"{% get_flatpages '/location/' for me as location_flatpages %}"
|
||||
"{% for page in location_flatpages %}"
|
||||
"{{ page.title }},"
|
||||
"{% endfor %}"
|
||||
).render(Context({
|
||||
'me': me
|
||||
}))
|
||||
self.assertEqual(out, "A Nested Flatpage,Sekrit Nested Flatpage,")
|
||||
|
||||
def test_get_flatpages_with_variable_prefix(self):
|
||||
"The prefix for the flatpage template tag can be a template variable"
|
||||
out = Template(
|
||||
"{% load flatpages %}"
|
||||
"{% get_flatpages location_prefix as location_flatpages %}"
|
||||
"{% for page in location_flatpages %}"
|
||||
"{{ page.title }},"
|
||||
"{% endfor %}"
|
||||
).render(Context({
|
||||
'location_prefix': '/location/'
|
||||
}))
|
||||
self.assertEqual(out, "A Nested Flatpage,")
|
||||
|
||||
def test_parsing_errors(self):
|
||||
"There are various ways that the flatpages template tag won't parse"
|
||||
render = lambda t: Template(t).render(Context())
|
||||
|
||||
self.assertRaises(TemplateSyntaxError, render,
|
||||
"{% load flatpages %}{% get_flatpages %}")
|
||||
self.assertRaises(TemplateSyntaxError, render,
|
||||
"{% load flatpages %}{% get_flatpages as %}")
|
||||
self.assertRaises(TemplateSyntaxError, render,
|
||||
"{% load flatpages %}{% get_flatpages cheesecake flatpages %}")
|
||||
self.assertRaises(TemplateSyntaxError, render,
|
||||
"{% load flatpages %}{% get_flatpages as flatpages asdf %}")
|
||||
self.assertRaises(TemplateSyntaxError, render,
|
||||
"{% load flatpages %}{% get_flatpages cheesecake user as flatpages %}")
|
||||
self.assertRaises(TemplateSyntaxError, render,
|
||||
"{% load flatpages %}{% get_flatpages for user as flatpages asdf %}")
|
||||
self.assertRaises(TemplateSyntaxError, render,
|
||||
"{% load flatpages %}{% get_flatpages prefix for user as flatpages asdf %}")
|
|
@ -1,125 +0,0 @@
|
|||
from django.conf import settings
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.auth.tests.utils import skipIfCustomUser
|
||||
from django.contrib.flatpages.models import FlatPage
|
||||
from django.test import TestCase, override_settings
|
||||
|
||||
from .settings import FLATPAGES_TEMPLATES
|
||||
|
||||
|
||||
@override_settings(
|
||||
LOGIN_URL='/accounts/login/',
|
||||
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',
|
||||
# no 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware'
|
||||
),
|
||||
ROOT_URLCONF='django.contrib.flatpages.tests.urls',
|
||||
TEMPLATES=FLATPAGES_TEMPLATES,
|
||||
SITE_ID=1,
|
||||
)
|
||||
class FlatpageViewTests(TestCase):
|
||||
fixtures = ['sample_flatpages', 'example_site']
|
||||
|
||||
def test_view_flatpage(self):
|
||||
"A flatpage can be served through a view"
|
||||
response = self.client.get('/flatpage_root/flatpage/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, "<p>Isn't it flat!</p>")
|
||||
|
||||
def test_view_non_existent_flatpage(self):
|
||||
"A non-existent flatpage raises 404 when served through a view"
|
||||
response = self.client.get('/flatpage_root/no_such_flatpage/')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
@skipIfCustomUser
|
||||
def test_view_authenticated_flatpage(self):
|
||||
"A flatpage served through a view can require authentication"
|
||||
response = self.client.get('/flatpage_root/sekrit/')
|
||||
self.assertRedirects(response, '/accounts/login/?next=/flatpage_root/sekrit/')
|
||||
User.objects.create_user('testuser', 'test@example.com', 's3krit')
|
||||
self.client.login(username='testuser', password='s3krit')
|
||||
response = self.client.get('/flatpage_root/sekrit/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, "<p>Isn't it sekrit!</p>")
|
||||
|
||||
def test_fallback_flatpage(self):
|
||||
"A fallback flatpage won't be served if the middleware is disabled"
|
||||
response = self.client.get('/flatpage/')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
def test_fallback_non_existent_flatpage(self):
|
||||
"A non-existent flatpage won't be served if the fallback middleware is disabled"
|
||||
response = self.client.get('/no_such_flatpage/')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
def test_view_flatpage_special_chars(self):
|
||||
"A flatpage with special chars in the URL can be served through a view"
|
||||
fp = FlatPage.objects.create(
|
||||
url="/some.very_special~chars-here/",
|
||||
title="A very special page",
|
||||
content="Isn't it special!",
|
||||
enable_comments=False,
|
||||
registration_required=False,
|
||||
)
|
||||
fp.sites.add(settings.SITE_ID)
|
||||
|
||||
response = self.client.get('/flatpage_root/some.very_special~chars-here/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, "<p>Isn't it special!</p>")
|
||||
|
||||
|
||||
@override_settings(
|
||||
APPEND_SLASH=True,
|
||||
LOGIN_URL='/accounts/login/',
|
||||
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',
|
||||
# no 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware'
|
||||
),
|
||||
ROOT_URLCONF='django.contrib.flatpages.tests.urls',
|
||||
TEMPLATES=FLATPAGES_TEMPLATES,
|
||||
SITE_ID=1,
|
||||
)
|
||||
class FlatpageViewAppendSlashTests(TestCase):
|
||||
fixtures = ['sample_flatpages', 'example_site']
|
||||
|
||||
def test_redirect_view_flatpage(self):
|
||||
"A flatpage can be served through a view and should add a slash"
|
||||
response = self.client.get('/flatpage_root/flatpage')
|
||||
self.assertRedirects(response, '/flatpage_root/flatpage/', status_code=301)
|
||||
|
||||
def test_redirect_view_non_existent_flatpage(self):
|
||||
"A non-existent flatpage raises 404 when served through a view and should not add a slash"
|
||||
response = self.client.get('/flatpage_root/no_such_flatpage')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
def test_redirect_fallback_flatpage(self):
|
||||
"A fallback flatpage won't be served if the middleware is disabled and should not add a slash"
|
||||
response = self.client.get('/flatpage')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
def test_redirect_fallback_non_existent_flatpage(self):
|
||||
"A non-existent flatpage won't be served if the fallback middleware is disabled and should not add a slash"
|
||||
response = self.client.get('/no_such_flatpage')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
def test_redirect_view_flatpage_special_chars(self):
|
||||
"A flatpage with special chars in the URL can be served through a view and should add a slash"
|
||||
fp = FlatPage.objects.create(
|
||||
url="/some.very_special~chars-here/",
|
||||
title="A very special page",
|
||||
content="Isn't it special!",
|
||||
enable_comments=False,
|
||||
registration_required=False,
|
||||
)
|
||||
fp.sites.add(settings.SITE_ID)
|
||||
|
||||
response = self.client.get('/flatpage_root/some.very_special~chars-here')
|
||||
self.assertRedirects(response, '/flatpage_root/some.very_special~chars-here/', status_code=301)
|
|
@ -1,13 +0,0 @@
|
|||
from django.conf.urls import include, url
|
||||
from django.contrib.flatpages.sitemaps import FlatPageSitemap
|
||||
from django.contrib.sitemaps import views
|
||||
|
||||
# special urls for flatpage test cases
|
||||
urlpatterns = [
|
||||
url(r'^flatpages/sitemap\.xml$', views.sitemap,
|
||||
{'sitemaps': {'flatpages': FlatPageSitemap}},
|
||||
name='django.contrib.sitemaps.views.sitemap'),
|
||||
|
||||
url(r'^flatpage_root', include('django.contrib.flatpages.urls')),
|
||||
url(r'^accounts/', include('django.contrib.auth.urls')),
|
||||
]
|
Loading…
Add table
Add a link
Reference in a new issue