summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/regressiontests/views/tests/__init__.py6
-rw-r--r--tests/regressiontests/views/tests/specials.py15
-rw-r--r--tests/regressiontests/views/urls.py5
-rw-r--r--tests/regressiontests/views/views.py9
4 files changed, 32 insertions, 3 deletions
diff --git a/tests/regressiontests/views/tests/__init__.py b/tests/regressiontests/views/tests/__init__.py
index 9964cd5833..ac947ab1dc 100644
--- a/tests/regressiontests/views/tests/__init__.py
+++ b/tests/regressiontests/views/tests/__init__.py
@@ -1,5 +1,7 @@
from defaults import *
+from generic.create_update import *
+from generic.date_based import *
from i18n import *
+from specials import *
from static import *
-from generic.date_based import *
-from generic.create_update import *
+
diff --git a/tests/regressiontests/views/tests/specials.py b/tests/regressiontests/views/tests/specials.py
new file mode 100644
index 0000000000..af2f9d0ffe
--- /dev/null
+++ b/tests/regressiontests/views/tests/specials.py
@@ -0,0 +1,15 @@
+# coding: utf-8
+from django.test import TestCase
+
+class URLHandling(TestCase):
+ """
+ Tests for URL handling in views and responses.
+ """
+ def test_iri_redirect(self):
+ """
+ Tests that redirecting to an IRI, requiring encoding before we use it
+ in an HTTP response, is handled correctly.
+ """
+ response = self.client.get(u'/views/中文/')
+ self.assertRedirects(response, "/views/%E4%B8%AD%E6%96%87/target/")
+
diff --git a/tests/regressiontests/views/urls.py b/tests/regressiontests/views/urls.py
index a6283c12bc..8ea0f31648 100644
--- a/tests/regressiontests/views/urls.py
+++ b/tests/regressiontests/views/urls.py
@@ -1,3 +1,4 @@
+# coding: utf-8
from os import path
from django.conf.urls.defaults import *
@@ -38,6 +39,10 @@ urlpatterns = patterns('',
# Static views
(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': media_dir}),
+
+ # Special URLs for particular regression cases.
+ url(u'^中文/$', 'regressiontests.views.views.redirect'),
+ url(u'^中文/target/$', 'regressiontests.views.views.index_page'),
)
# Date-based generic views.
diff --git a/tests/regressiontests/views/views.py b/tests/regressiontests/views/views.py
index b90852189c..9a9191dd4d 100644
--- a/tests/regressiontests/views/views.py
+++ b/tests/regressiontests/views/views.py
@@ -1,4 +1,4 @@
-from django.http import HttpResponse
+from django.http import HttpResponse, HttpResponseRedirect
from django import forms
from django.views.generic.create_update import create_object
@@ -27,3 +27,10 @@ def custom_create(request):
return create_object(request,
post_save_redirect='/views/create_update/view/article/%(slug)s/',
form_class=SlugChangingArticleForm)
+
+def redirect(request):
+ """
+ Forces an HTTP redirect.
+ """
+ return HttpResponseRedirect("target/")
+