summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJannis Leidel <jannis@leidel.info>2012-03-02 11:07:36 +0000
committerJannis Leidel <jannis@leidel.info>2012-03-02 11:07:36 +0000
commit746987f916bfb24a0671429d9993ad727dc7c8bc (patch)
tree337b7241f5290b1ee934115c381b9338b7748b8d /tests
parenta255d3933828ea5ab5173bc41336a64f446057bb (diff)
Fixed #17734 -- Made sure to only redirect translated URLs if they can actually be resolved to prevent unwanted redirects. Many thanks to Orne Brocaar and Anssi Kääriäinen for input.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17621 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
-rw-r--r--tests/regressiontests/i18n/patterns/tests.py35
-rw-r--r--tests/regressiontests/i18n/patterns/urls/namespace.py1
2 files changed, 11 insertions, 25 deletions
diff --git a/tests/regressiontests/i18n/patterns/tests.py b/tests/regressiontests/i18n/patterns/tests.py
index 1cc4520358..1216d0bde9 100644
--- a/tests/regressiontests/i18n/patterns/tests.py
+++ b/tests/regressiontests/i18n/patterns/tests.py
@@ -144,37 +144,29 @@ class URLRedirectTests(URLTestCaseBase):
def test_en_redirect(self):
response = self.client.get('/account/register/', HTTP_ACCEPT_LANGUAGE='en')
- self.assertRedirects(response, 'http://testserver/en/account/register/')
+ self.assertRedirects(response, '/en/account/register/')
response = self.client.get(response['location'])
self.assertEqual(response.status_code, 200)
def test_en_redirect_wrong_url(self):
response = self.client.get('/profiel/registeren/', HTTP_ACCEPT_LANGUAGE='en')
- self.assertEqual(response.status_code, 302)
- self.assertEqual(response['location'], 'http://testserver/en/profiel/registeren/')
-
- response = self.client.get(response['location'])
self.assertEqual(response.status_code, 404)
def test_nl_redirect(self):
response = self.client.get('/profiel/registeren/', HTTP_ACCEPT_LANGUAGE='nl')
- self.assertRedirects(response, 'http://testserver/nl/profiel/registeren/')
+ self.assertRedirects(response, '/nl/profiel/registeren/')
response = self.client.get(response['location'])
self.assertEqual(response.status_code, 200)
def test_nl_redirect_wrong_url(self):
response = self.client.get('/account/register/', HTTP_ACCEPT_LANGUAGE='nl')
- self.assertEqual(response.status_code, 302)
- self.assertEqual(response['location'], 'http://testserver/nl/account/register/')
-
- response = self.client.get(response['location'])
self.assertEqual(response.status_code, 404)
def test_pt_br_redirect(self):
response = self.client.get('/conta/registre-se/', HTTP_ACCEPT_LANGUAGE='pt-br')
- self.assertRedirects(response, 'http://testserver/pt-br/conta/registre-se/')
+ self.assertRedirects(response, '/pt-br/conta/registre-se/')
response = self.client.get(response['location'])
self.assertEqual(response.status_code, 200)
@@ -187,17 +179,15 @@ class URLRedirectWithoutTrailingSlashTests(URLTestCaseBase):
"""
def test_not_prefixed_redirect(self):
response = self.client.get('/not-prefixed', HTTP_ACCEPT_LANGUAGE='en')
- self.assertEqual(response.status_code, 301)
- self.assertEqual(response['location'], 'http://testserver/not-prefixed/')
+ self.assertRedirects(response, '/not-prefixed/', 301)
def test_en_redirect(self):
response = self.client.get('/account/register', HTTP_ACCEPT_LANGUAGE='en')
- self.assertEqual(response.status_code, 302)
- self.assertEqual(response['location'], 'http://testserver/en/account/register')
+ # target status code of 301 because of CommonMiddleware redirecting
+ self.assertRedirects(response, '/en/account/register', 302, target_status_code=301)
response = self.client.get(response['location'])
- self.assertEqual(response.status_code, 301)
- self.assertEqual(response['location'], 'http://testserver/en/account/register/')
+ self.assertRedirects(response, '/en/account/register/', 301)
class URLRedirectWithoutTrailingSlashSettingTests(URLTestCaseBase):
@@ -208,20 +198,15 @@ class URLRedirectWithoutTrailingSlashSettingTests(URLTestCaseBase):
@override_settings(APPEND_SLASH=False)
def test_not_prefixed_redirect(self):
response = self.client.get('/not-prefixed', HTTP_ACCEPT_LANGUAGE='en')
- self.assertEqual(response.status_code, 302)
- self.assertEqual(response['location'], 'http://testserver/en/not-prefixed')
-
- response = self.client.get(response['location'])
self.assertEqual(response.status_code, 404)
@override_settings(APPEND_SLASH=False)
def test_en_redirect(self):
- response = self.client.get('/account/register', HTTP_ACCEPT_LANGUAGE='en')
- self.assertEqual(response.status_code, 302)
- self.assertEqual(response['location'], 'http://testserver/en/account/register')
+ response = self.client.get('/account/register-without-slash', HTTP_ACCEPT_LANGUAGE='en')
+ self.assertRedirects(response, '/en/account/register-without-slash', 302)
response = self.client.get(response['location'])
- self.assertEqual(response.status_code, 404)
+ self.assertEqual(response.status_code, 200)
class URLResponseTests(URLTestCaseBase):
diff --git a/tests/regressiontests/i18n/patterns/urls/namespace.py b/tests/regressiontests/i18n/patterns/urls/namespace.py
index bf43949961..3a2467b7b5 100644
--- a/tests/regressiontests/i18n/patterns/urls/namespace.py
+++ b/tests/regressiontests/i18n/patterns/urls/namespace.py
@@ -7,4 +7,5 @@ view = TemplateView.as_view(template_name='dummy.html')
urlpatterns = patterns('',
url(_(r'^register/$'), view, name='register'),
+ url(_(r'^register-without-slash$'), view, name='register-without-slash'),
)