~ubuntu-branches/debian/sid/python-django/sid

« back to all changes in this revision

Viewing changes to django/contrib/flatpages/tests/views.py

  • Committer: Package Import Robot
  • Author(s): Luke Faraone
  • Date: 2013-11-07 15:33:49 UTC
  • mfrom: (1.3.12)
  • Revision ID: package-import@ubuntu.com-20131107153349-e31sc149l2szs3jb
Tags: 1.6-1
* New upstream version. Closes: #557474, #724637.
* python-django now also suggests the installation of ipython,
  bpython, python-django-doc, and libgdal1.
  Closes: #636511, #686333, #704203
* Set package maintainer to Debian Python Modules Team.
* Bump standards version to 3.9.5, no changes needed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
import os
2
 
from django.conf import settings
3
 
from django.contrib.auth.models import User
4
 
from django.contrib.auth.tests.utils import skipIfCustomUser
5
 
from django.contrib.flatpages.models import FlatPage
6
 
from django.test import TestCase
7
 
from django.test.utils import override_settings
8
 
 
9
 
 
10
 
@override_settings(
11
 
    LOGIN_URL='/accounts/login/',
12
 
    MIDDLEWARE_CLASSES=(
13
 
        'django.middleware.common.CommonMiddleware',
14
 
        'django.contrib.sessions.middleware.SessionMiddleware',
15
 
        'django.middleware.csrf.CsrfViewMiddleware',
16
 
        'django.contrib.auth.middleware.AuthenticationMiddleware',
17
 
        'django.contrib.messages.middleware.MessageMiddleware',
18
 
        # no 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware'
19
 
    ),
20
 
    TEMPLATE_DIRS=(
21
 
        os.path.join(os.path.dirname(__file__), 'templates'),
22
 
    ),
23
 
    SITE_ID=1,
24
 
)
25
 
class FlatpageViewTests(TestCase):
26
 
    fixtures = ['sample_flatpages', 'example_site']
27
 
    urls = 'django.contrib.flatpages.tests.urls'
28
 
 
29
 
    def test_view_flatpage(self):
30
 
        "A flatpage can be served through a view"
31
 
        response = self.client.get('/flatpage_root/flatpage/')
32
 
        self.assertEqual(response.status_code, 200)
33
 
        self.assertContains(response, "<p>Isn't it flat!</p>")
34
 
 
35
 
    def test_view_non_existent_flatpage(self):
36
 
        "A non-existent flatpage raises 404 when served through a view"
37
 
        response = self.client.get('/flatpage_root/no_such_flatpage/')
38
 
        self.assertEqual(response.status_code, 404)
39
 
 
40
 
    @skipIfCustomUser
41
 
    def test_view_authenticated_flatpage(self):
42
 
        "A flatpage served through a view can require authentication"
43
 
        response = self.client.get('/flatpage_root/sekrit/')
44
 
        self.assertRedirects(response, '/accounts/login/?next=/flatpage_root/sekrit/')
45
 
        User.objects.create_user('testuser', 'test@example.com', 's3krit')
46
 
        self.client.login(username='testuser',password='s3krit')
47
 
        response = self.client.get('/flatpage_root/sekrit/')
48
 
        self.assertEqual(response.status_code, 200)
49
 
        self.assertContains(response, "<p>Isn't it sekrit!</p>")
50
 
 
51
 
    def test_fallback_flatpage(self):
52
 
        "A fallback flatpage won't be served if the middleware is disabled"
53
 
        response = self.client.get('/flatpage/')
54
 
        self.assertEqual(response.status_code, 404)
55
 
 
56
 
    def test_fallback_non_existent_flatpage(self):
57
 
        "A non-existent flatpage won't be served if the fallback middlware is disabled"
58
 
        response = self.client.get('/no_such_flatpage/')
59
 
        self.assertEqual(response.status_code, 404)
60
 
 
61
 
    def test_view_flatpage_special_chars(self):
62
 
        "A flatpage with special chars in the URL can be served through a view"
63
 
        fp = FlatPage.objects.create(
64
 
            url="/some.very_special~chars-here/",
65
 
            title="A very special page",
66
 
            content="Isn't it special!",
67
 
            enable_comments=False,
68
 
            registration_required=False,
69
 
        )
70
 
        fp.sites.add(settings.SITE_ID)
71
 
 
72
 
        response = self.client.get('/flatpage_root/some.very_special~chars-here/')
73
 
        self.assertEqual(response.status_code, 200)
74
 
        self.assertContains(response, "<p>Isn't it special!</p>")
75
 
 
76
 
 
77
 
@override_settings(
78
 
    APPEND_SLASH = True,
79
 
    LOGIN_URL='/accounts/login/',
80
 
    MIDDLEWARE_CLASSES=(
81
 
        'django.middleware.common.CommonMiddleware',
82
 
        'django.contrib.sessions.middleware.SessionMiddleware',
83
 
        'django.middleware.csrf.CsrfViewMiddleware',
84
 
        'django.contrib.auth.middleware.AuthenticationMiddleware',
85
 
        'django.contrib.messages.middleware.MessageMiddleware',
86
 
        # no 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware'
87
 
    ),
88
 
    TEMPLATE_DIRS=(
89
 
        os.path.join(os.path.dirname(__file__), 'templates'),
90
 
    ),
91
 
    SITE_ID=1,
92
 
)
93
 
class FlatpageViewAppendSlashTests(TestCase):
94
 
    fixtures = ['sample_flatpages', 'example_site']
95
 
    urls = 'django.contrib.flatpages.tests.urls'
96
 
 
97
 
    def test_redirect_view_flatpage(self):
98
 
        "A flatpage can be served through a view and should add a slash"
99
 
        response = self.client.get('/flatpage_root/flatpage')
100
 
        self.assertRedirects(response, '/flatpage_root/flatpage/', status_code=301)
101
 
 
102
 
    def test_redirect_view_non_existent_flatpage(self):
103
 
        "A non-existent flatpage raises 404 when served through a view and should not add a slash"
104
 
        response = self.client.get('/flatpage_root/no_such_flatpage')
105
 
        self.assertEqual(response.status_code, 404)
106
 
 
107
 
    def test_redirect_fallback_flatpage(self):
108
 
        "A fallback flatpage won't be served if the middleware is disabled and should not add a slash"
109
 
        response = self.client.get('/flatpage')
110
 
        self.assertEqual(response.status_code, 404)
111
 
 
112
 
    def test_redirect_fallback_non_existent_flatpage(self):
113
 
        "A non-existent flatpage won't be served if the fallback middlware is disabled and should not add a slash"
114
 
        response = self.client.get('/no_such_flatpage')
115
 
        self.assertEqual(response.status_code, 404)
116
 
 
117
 
    def test_redirect_view_flatpage_special_chars(self):
118
 
        "A flatpage with special chars in the URL can be served through a view and should add a slash"
119
 
        fp = FlatPage.objects.create(
120
 
            url="/some.very_special~chars-here/",
121
 
            title="A very special page",
122
 
            content="Isn't it special!",
123
 
            enable_comments=False,
124
 
            registration_required=False,
125
 
        )
126
 
        fp.sites.add(settings.SITE_ID)
127
 
 
128
 
        response = self.client.get('/flatpage_root/some.very_special~chars-here')
129
 
        self.assertRedirects(response, '/flatpage_root/some.very_special~chars-here/', status_code=301)