summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJannis Leidel <jannis@leidel.info>2011-08-12 14:15:31 +0000
committerJannis Leidel <jannis@leidel.info>2011-08-12 14:15:31 +0000
commit1ca6e9b9e24240033349c93b05902c79c0a25bbb (patch)
treec6d4b1fca5b881e62481094cd2cedcaaa3a82af9 /tests
parent958e049d4d90fb5e0fe582eb4339af3c58dd5c07 (diff)
Fixed #9847 -- Added 403 response handler. Many thanks to kgrandis, adamnelson, vkryachko, fvox13 and Chris Beaven.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16606 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
-rw-r--r--tests/regressiontests/views/tests/debug.py22
-rw-r--r--tests/regressiontests/views/urls.py5
-rw-r--r--tests/regressiontests/views/views.py6
3 files changed, 30 insertions, 3 deletions
diff --git a/tests/regressiontests/views/tests/debug.py b/tests/regressiontests/views/tests/debug.py
index 012c1c6f90..fc5325d7d7 100644
--- a/tests/regressiontests/views/tests/debug.py
+++ b/tests/regressiontests/views/tests/debug.py
@@ -6,6 +6,8 @@ import sys
from django.conf import settings
from django.core.files.uploadedfile import SimpleUploadedFile
from django.test import TestCase, RequestFactory
+from django.test.utils import (setup_test_template_loader,
+ restore_template_loaders)
from django.core.urlresolvers import reverse
from django.template import TemplateSyntaxError
from django.views.debug import ExceptionReporter
@@ -40,6 +42,26 @@ class DebugViewTests(TestCase):
self.assertTrue('file_data.txt' in response.content)
self.assertFalse('haha' in response.content)
+ def test_403(self):
+ # Ensure no 403.html template exists to test the default case.
+ setup_test_template_loader({})
+ try:
+ response = self.client.get('/views/raises403/')
+ self.assertContains(response, '<h1>403 Forbidden</h1>', status_code=403)
+ finally:
+ restore_template_loaders()
+
+ def test_403_template(self):
+ # Set up a test 403.html template.
+ setup_test_template_loader(
+ {'403.html': 'This is a test template for a 403 Forbidden error.'}
+ )
+ try:
+ response = self.client.get('/views/raises403/')
+ self.assertContains(response, 'test template', status_code=403)
+ finally:
+ restore_template_loaders()
+
def test_404(self):
response = self.client.get('/views/raises404/')
self.assertEqual(response.status_code, 404)
diff --git a/tests/regressiontests/views/urls.py b/tests/regressiontests/views/urls.py
index 32f03b444e..6af725357b 100644
--- a/tests/regressiontests/views/urls.py
+++ b/tests/regressiontests/views/urls.py
@@ -39,8 +39,9 @@ urlpatterns = patterns('',
(r'^server_error/', 'django.views.defaults.server_error'),
# a view that raises an exception for the debug view
- (r'^raises/$', views.raises),
- (r'^raises404/$', views.raises404),
+ (r'raises/$', views.raises),
+ (r'raises404/$', views.raises404),
+ (r'raises403/$', views.raises403),
# i18n views
(r'^i18n/', include('django.conf.urls.i18n')),
diff --git a/tests/regressiontests/views/views.py b/tests/regressiontests/views/views.py
index 7d59257ef7..02f765af1c 100644
--- a/tests/regressiontests/views/views.py
+++ b/tests/regressiontests/views/views.py
@@ -1,8 +1,9 @@
import sys
from django import forms
-from django.http import HttpResponse, HttpResponseRedirect
+from django.core.exceptions import PermissionDenied
from django.core.urlresolvers import get_resolver
+from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render_to_response, render
from django.template import Context, RequestContext, TemplateDoesNotExist
from django.views.debug import technical_500_response, SafeExceptionReporterFilter
@@ -53,6 +54,9 @@ def raises404(request):
resolver = get_resolver(None)
resolver.resolve('')
+def raises403(request):
+ raise PermissionDenied
+
def redirect(request):
"""
Forces an HTTP redirect.