|
@@ -8,7 +8,7 @@ import os
|
|
|
import itertools
|
|
|
|
|
|
from django.conf import settings
|
|
|
-from django.core.urlresolvers import reverse
|
|
|
+from django.core.urlresolvers import reverse, NoReverseMatch
|
|
|
from django.template import (TemplateSyntaxError,
|
|
|
Context, Template, loader)
|
|
|
import django.template.context
|
|
@@ -30,9 +30,11 @@ from .views import CustomTestException
|
|
|
TEMPLATE_DIRS=(os.path.join(os.path.dirname(upath(__file__)), 'templates'),)
|
|
|
)
|
|
|
class AssertContainsTests(TestCase):
|
|
|
+ urls = 'test_client_regress.urls'
|
|
|
+
|
|
|
def test_contains(self):
|
|
|
"Responses can be inspected for content, including counting repeated substrings"
|
|
|
- response = self.client.get('/test_client_regress/no_template_view/')
|
|
|
+ response = self.client.get('/no_template_view/')
|
|
|
|
|
|
self.assertNotContains(response, 'never')
|
|
|
self.assertContains(response, 'never', 0)
|
|
@@ -125,35 +127,35 @@ class AssertContainsTests(TestCase):
|
|
|
def test_unicode_contains(self):
|
|
|
"Unicode characters can be found in template context"
|
|
|
# Regression test for #10183
|
|
|
- r = self.client.get('/test_client_regress/check_unicode/')
|
|
|
+ r = self.client.get('/check_unicode/')
|
|
|
self.assertContains(r, 'さかき')
|
|
|
self.assertContains(r, b'\xe5\xb3\xa0'.decode('utf-8'))
|
|
|
|
|
|
def test_unicode_not_contains(self):
|
|
|
"Unicode characters can be searched for, and not found in template context"
|
|
|
# Regression test for #10183
|
|
|
- r = self.client.get('/test_client_regress/check_unicode/')
|
|
|
+ r = self.client.get('/check_unicode/')
|
|
|
self.assertNotContains(r, 'はたけ')
|
|
|
self.assertNotContains(r, b'\xe3\x81\xaf\xe3\x81\x9f\xe3\x81\x91'.decode('utf-8'))
|
|
|
|
|
|
def test_binary_contains(self):
|
|
|
- r = self.client.get('/test_client_regress/check_binary/')
|
|
|
+ r = self.client.get('/check_binary/')
|
|
|
self.assertContains(r, b'%PDF-1.4\r\n%\x93\x8c\x8b\x9e')
|
|
|
with self.assertRaises(AssertionError):
|
|
|
self.assertContains(r, b'%PDF-1.4\r\n%\x93\x8c\x8b\x9e', count=2)
|
|
|
|
|
|
def test_binary_not_contains(self):
|
|
|
- r = self.client.get('/test_client_regress/check_binary/')
|
|
|
+ r = self.client.get('/check_binary/')
|
|
|
self.assertNotContains(r, b'%ODF-1.4\r\n%\x93\x8c\x8b\x9e')
|
|
|
with self.assertRaises(AssertionError):
|
|
|
self.assertNotContains(r, b'%PDF-1.4\r\n%\x93\x8c\x8b\x9e')
|
|
|
|
|
|
def test_nontext_contains(self):
|
|
|
- r = self.client.get('/test_client_regress/no_template_view/')
|
|
|
+ r = self.client.get('/no_template_view/')
|
|
|
self.assertContains(r, ugettext_lazy('once'))
|
|
|
|
|
|
def test_nontext_not_contains(self):
|
|
|
- r = self.client.get('/test_client_regress/no_template_view/')
|
|
|
+ r = self.client.get('/no_template_view/')
|
|
|
self.assertNotContains(r, ugettext_lazy('never'))
|
|
|
|
|
|
def test_assert_contains_renders_template_response(self):
|
|
@@ -191,11 +193,12 @@ class AssertContainsTests(TestCase):
|
|
|
|
|
|
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
|
|
|
class AssertTemplateUsedTests(TestCase):
|
|
|
+ urls = 'test_client_regress.urls'
|
|
|
fixtures = ['testdata.json']
|
|
|
|
|
|
def test_no_context(self):
|
|
|
"Template usage assertions work then templates aren't in use"
|
|
|
- response = self.client.get('/test_client_regress/no_template_view/')
|
|
|
+ response = self.client.get('/no_template_view/')
|
|
|
|
|
|
# Check that the no template case doesn't mess with the template assertions
|
|
|
self.assertTemplateNotUsed(response, 'GET Template')
|
|
@@ -212,7 +215,7 @@ class AssertTemplateUsedTests(TestCase):
|
|
|
|
|
|
def test_single_context(self):
|
|
|
"Template assertions work when there is a single context"
|
|
|
- response = self.client.get('/test_client/post_view/', {})
|
|
|
+ response = self.client.get('/post_view/', {})
|
|
|
|
|
|
try:
|
|
|
self.assertTemplateNotUsed(response, 'Empty GET Template')
|
|
@@ -243,7 +246,7 @@ class AssertTemplateUsedTests(TestCase):
|
|
|
'single': 'b',
|
|
|
'multi': ('b', 'c', 'e')
|
|
|
}
|
|
|
- response = self.client.post('/test_client/form_view_with_template/', post_data)
|
|
|
+ response = self.client.post('/form_view_with_template/', post_data)
|
|
|
self.assertContains(response, 'POST data OK')
|
|
|
try:
|
|
|
self.assertTemplateNotUsed(response, "form_view.html")
|
|
@@ -262,144 +265,146 @@ class AssertTemplateUsedTests(TestCase):
|
|
|
|
|
|
|
|
|
class AssertRedirectsTests(TestCase):
|
|
|
+ urls = 'test_client_regress.urls'
|
|
|
+
|
|
|
def test_redirect_page(self):
|
|
|
"An assertion is raised if the original page couldn't be retrieved as expected"
|
|
|
# This page will redirect with code 301, not 302
|
|
|
- response = self.client.get('/test_client/permanent_redirect_view/')
|
|
|
+ response = self.client.get('/permanent_redirect_view/')
|
|
|
try:
|
|
|
- self.assertRedirects(response, '/test_client/get_view/')
|
|
|
+ self.assertRedirects(response, '/get_view/')
|
|
|
except AssertionError as e:
|
|
|
self.assertIn("Response didn't redirect as expected: Response code was 301 (expected 302)", str(e))
|
|
|
|
|
|
try:
|
|
|
- self.assertRedirects(response, '/test_client/get_view/', msg_prefix='abc')
|
|
|
+ self.assertRedirects(response, '/get_view/', msg_prefix='abc')
|
|
|
except AssertionError as e:
|
|
|
self.assertIn("abc: Response didn't redirect as expected: Response code was 301 (expected 302)", str(e))
|
|
|
|
|
|
def test_lost_query(self):
|
|
|
"An assertion is raised if the redirect location doesn't preserve GET parameters"
|
|
|
- response = self.client.get('/test_client/redirect_view/', {'var': 'value'})
|
|
|
+ response = self.client.get('/redirect_view/', {'var': 'value'})
|
|
|
try:
|
|
|
- self.assertRedirects(response, '/test_client/get_view/')
|
|
|
+ self.assertRedirects(response, '/get_view/')
|
|
|
except AssertionError as e:
|
|
|
- self.assertIn("Response redirected to 'http://testserver/test_client/get_view/?var=value', expected 'http://testserver/test_client/get_view/'", str(e))
|
|
|
+ self.assertIn("Response redirected to 'http://testserver/get_view/?var=value', expected 'http://testserver/get_view/'", str(e))
|
|
|
|
|
|
try:
|
|
|
- self.assertRedirects(response, '/test_client/get_view/', msg_prefix='abc')
|
|
|
+ self.assertRedirects(response, '/get_view/', msg_prefix='abc')
|
|
|
except AssertionError as e:
|
|
|
- self.assertIn("abc: Response redirected to 'http://testserver/test_client/get_view/?var=value', expected 'http://testserver/test_client/get_view/'", str(e))
|
|
|
+ self.assertIn("abc: Response redirected to 'http://testserver/get_view/?var=value', expected 'http://testserver/get_view/'", str(e))
|
|
|
|
|
|
def test_incorrect_target(self):
|
|
|
"An assertion is raised if the response redirects to another target"
|
|
|
- response = self.client.get('/test_client/permanent_redirect_view/')
|
|
|
+ response = self.client.get('/permanent_redirect_view/')
|
|
|
try:
|
|
|
# Should redirect to get_view
|
|
|
- self.assertRedirects(response, '/test_client/some_view/')
|
|
|
+ self.assertRedirects(response, '/some_view/')
|
|
|
except AssertionError as e:
|
|
|
self.assertIn("Response didn't redirect as expected: Response code was 301 (expected 302)", str(e))
|
|
|
|
|
|
def test_target_page(self):
|
|
|
"An assertion is raised if the response redirect target cannot be retrieved as expected"
|
|
|
- response = self.client.get('/test_client/double_redirect_view/')
|
|
|
+ response = self.client.get('/double_redirect_view/')
|
|
|
try:
|
|
|
# The redirect target responds with a 301 code, not 200
|
|
|
- self.assertRedirects(response, 'http://testserver/test_client/permanent_redirect_view/')
|
|
|
+ self.assertRedirects(response, 'http://testserver/permanent_redirect_view/')
|
|
|
except AssertionError as e:
|
|
|
- self.assertIn("Couldn't retrieve redirection page '/test_client/permanent_redirect_view/': response code was 301 (expected 200)", str(e))
|
|
|
+ self.assertIn("Couldn't retrieve redirection page '/permanent_redirect_view/': response code was 301 (expected 200)", str(e))
|
|
|
|
|
|
try:
|
|
|
# The redirect target responds with a 301 code, not 200
|
|
|
- self.assertRedirects(response, 'http://testserver/test_client/permanent_redirect_view/', msg_prefix='abc')
|
|
|
+ self.assertRedirects(response, 'http://testserver/permanent_redirect_view/', msg_prefix='abc')
|
|
|
except AssertionError as e:
|
|
|
- self.assertIn("abc: Couldn't retrieve redirection page '/test_client/permanent_redirect_view/': response code was 301 (expected 200)", str(e))
|
|
|
+ self.assertIn("abc: Couldn't retrieve redirection page '/permanent_redirect_view/': response code was 301 (expected 200)", str(e))
|
|
|
|
|
|
def test_redirect_chain(self):
|
|
|
"You can follow a redirect chain of multiple redirects"
|
|
|
- response = self.client.get('/test_client_regress/redirects/further/more/', {}, follow=True)
|
|
|
- self.assertRedirects(response, '/test_client_regress/no_template_view/',
|
|
|
+ response = self.client.get('/redirects/further/more/', {}, follow=True)
|
|
|
+ self.assertRedirects(response, '/no_template_view/',
|
|
|
status_code=301, target_status_code=200)
|
|
|
|
|
|
self.assertEqual(len(response.redirect_chain), 1)
|
|
|
- self.assertEqual(response.redirect_chain[0], ('http://testserver/test_client_regress/no_template_view/', 301))
|
|
|
+ self.assertEqual(response.redirect_chain[0], ('http://testserver/no_template_view/', 301))
|
|
|
|
|
|
def test_multiple_redirect_chain(self):
|
|
|
"You can follow a redirect chain of multiple redirects"
|
|
|
- response = self.client.get('/test_client_regress/redirects/', {}, follow=True)
|
|
|
- self.assertRedirects(response, '/test_client_regress/no_template_view/',
|
|
|
+ response = self.client.get('/redirects/', {}, follow=True)
|
|
|
+ self.assertRedirects(response, '/no_template_view/',
|
|
|
status_code=301, target_status_code=200)
|
|
|
|
|
|
self.assertEqual(len(response.redirect_chain), 3)
|
|
|
- self.assertEqual(response.redirect_chain[0], ('http://testserver/test_client_regress/redirects/further/', 301))
|
|
|
- self.assertEqual(response.redirect_chain[1], ('http://testserver/test_client_regress/redirects/further/more/', 301))
|
|
|
- self.assertEqual(response.redirect_chain[2], ('http://testserver/test_client_regress/no_template_view/', 301))
|
|
|
+ self.assertEqual(response.redirect_chain[0], ('http://testserver/redirects/further/', 301))
|
|
|
+ self.assertEqual(response.redirect_chain[1], ('http://testserver/redirects/further/more/', 301))
|
|
|
+ self.assertEqual(response.redirect_chain[2], ('http://testserver/no_template_view/', 301))
|
|
|
|
|
|
def test_redirect_chain_to_non_existent(self):
|
|
|
"You can follow a chain to a non-existent view"
|
|
|
- response = self.client.get('/test_client_regress/redirect_to_non_existent_view2/', {}, follow=True)
|
|
|
- self.assertRedirects(response, '/test_client_regress/non_existent_view/',
|
|
|
+ response = self.client.get('/redirect_to_non_existent_view2/', {}, follow=True)
|
|
|
+ self.assertRedirects(response, '/non_existent_view/',
|
|
|
status_code=301, target_status_code=404)
|
|
|
|
|
|
def test_redirect_chain_to_self(self):
|
|
|
"Redirections to self are caught and escaped"
|
|
|
- response = self.client.get('/test_client_regress/redirect_to_self/', {}, follow=True)
|
|
|
+ response = self.client.get('/redirect_to_self/', {}, follow=True)
|
|
|
# The chain of redirects stops once the cycle is detected.
|
|
|
- self.assertRedirects(response, '/test_client_regress/redirect_to_self/',
|
|
|
+ self.assertRedirects(response, '/redirect_to_self/',
|
|
|
status_code=301, target_status_code=301)
|
|
|
self.assertEqual(len(response.redirect_chain), 2)
|
|
|
|
|
|
def test_circular_redirect(self):
|
|
|
"Circular redirect chains are caught and escaped"
|
|
|
- response = self.client.get('/test_client_regress/circular_redirect_1/', {}, follow=True)
|
|
|
+ response = self.client.get('/circular_redirect_1/', {}, follow=True)
|
|
|
# The chain of redirects will get back to the starting point, but stop there.
|
|
|
- self.assertRedirects(response, '/test_client_regress/circular_redirect_2/',
|
|
|
+ self.assertRedirects(response, '/circular_redirect_2/',
|
|
|
status_code=301, target_status_code=301)
|
|
|
self.assertEqual(len(response.redirect_chain), 4)
|
|
|
|
|
|
def test_redirect_chain_post(self):
|
|
|
"A redirect chain will be followed from an initial POST post"
|
|
|
- response = self.client.post('/test_client_regress/redirects/',
|
|
|
+ response = self.client.post('/redirects/',
|
|
|
{'nothing': 'to_send'}, follow=True)
|
|
|
self.assertRedirects(response,
|
|
|
- '/test_client_regress/no_template_view/', 301, 200)
|
|
|
+ '/no_template_view/', 301, 200)
|
|
|
self.assertEqual(len(response.redirect_chain), 3)
|
|
|
|
|
|
def test_redirect_chain_head(self):
|
|
|
"A redirect chain will be followed from an initial HEAD request"
|
|
|
- response = self.client.head('/test_client_regress/redirects/',
|
|
|
+ response = self.client.head('/redirects/',
|
|
|
{'nothing': 'to_send'}, follow=True)
|
|
|
self.assertRedirects(response,
|
|
|
- '/test_client_regress/no_template_view/', 301, 200)
|
|
|
+ '/no_template_view/', 301, 200)
|
|
|
self.assertEqual(len(response.redirect_chain), 3)
|
|
|
|
|
|
def test_redirect_chain_options(self):
|
|
|
"A redirect chain will be followed from an initial OPTIONS request"
|
|
|
- response = self.client.options('/test_client_regress/redirects/',
|
|
|
+ response = self.client.options('/redirects/',
|
|
|
follow=True)
|
|
|
self.assertRedirects(response,
|
|
|
- '/test_client_regress/no_template_view/', 301, 200)
|
|
|
+ '/no_template_view/', 301, 200)
|
|
|
self.assertEqual(len(response.redirect_chain), 3)
|
|
|
|
|
|
def test_redirect_chain_put(self):
|
|
|
"A redirect chain will be followed from an initial PUT request"
|
|
|
- response = self.client.put('/test_client_regress/redirects/',
|
|
|
+ response = self.client.put('/redirects/',
|
|
|
follow=True)
|
|
|
self.assertRedirects(response,
|
|
|
- '/test_client_regress/no_template_view/', 301, 200)
|
|
|
+ '/no_template_view/', 301, 200)
|
|
|
self.assertEqual(len(response.redirect_chain), 3)
|
|
|
|
|
|
def test_redirect_chain_delete(self):
|
|
|
"A redirect chain will be followed from an initial DELETE request"
|
|
|
- response = self.client.delete('/test_client_regress/redirects/',
|
|
|
+ response = self.client.delete('/redirects/',
|
|
|
follow=True)
|
|
|
self.assertRedirects(response,
|
|
|
- '/test_client_regress/no_template_view/', 301, 200)
|
|
|
+ '/no_template_view/', 301, 200)
|
|
|
self.assertEqual(len(response.redirect_chain), 3)
|
|
|
|
|
|
def test_redirect_to_different_host(self):
|
|
|
"The test client will preserve scheme, host and port changes"
|
|
|
- response = self.client.get('/test_client_regress/redirect_other_host/', follow=True)
|
|
|
+ response = self.client.get('/redirect_other_host/', follow=True)
|
|
|
self.assertRedirects(response,
|
|
|
- 'https://otherserver:8443/test_client_regress/no_template_view/',
|
|
|
+ 'https://otherserver:8443/no_template_view/',
|
|
|
status_code=301, target_status_code=200)
|
|
|
# We can't use is_secure() or get_host()
|
|
|
# because response.request is a dictionary, not an HttpRequest
|
|
@@ -410,28 +415,28 @@ class AssertRedirectsTests(TestCase):
|
|
|
def test_redirect_chain_on_non_redirect_page(self):
|
|
|
"An assertion is raised if the original page couldn't be retrieved as expected"
|
|
|
# This page will redirect with code 301, not 302
|
|
|
- response = self.client.get('/test_client/get_view/', follow=True)
|
|
|
+ response = self.client.get('/get_view/', follow=True)
|
|
|
try:
|
|
|
- self.assertRedirects(response, '/test_client/get_view/')
|
|
|
+ self.assertRedirects(response, '/get_view/')
|
|
|
except AssertionError as e:
|
|
|
self.assertIn("Response didn't redirect as expected: Response code was 200 (expected 302)", str(e))
|
|
|
|
|
|
try:
|
|
|
- self.assertRedirects(response, '/test_client/get_view/', msg_prefix='abc')
|
|
|
+ self.assertRedirects(response, '/get_view/', msg_prefix='abc')
|
|
|
except AssertionError as e:
|
|
|
self.assertIn("abc: Response didn't redirect as expected: Response code was 200 (expected 302)", str(e))
|
|
|
|
|
|
def test_redirect_on_non_redirect_page(self):
|
|
|
"An assertion is raised if the original page couldn't be retrieved as expected"
|
|
|
# This page will redirect with code 301, not 302
|
|
|
- response = self.client.get('/test_client/get_view/')
|
|
|
+ response = self.client.get('/get_view/')
|
|
|
try:
|
|
|
- self.assertRedirects(response, '/test_client/get_view/')
|
|
|
+ self.assertRedirects(response, '/get_view/')
|
|
|
except AssertionError as e:
|
|
|
self.assertIn("Response didn't redirect as expected: Response code was 200 (expected 302)", str(e))
|
|
|
|
|
|
try:
|
|
|
- self.assertRedirects(response, '/test_client/get_view/', msg_prefix='abc')
|
|
|
+ self.assertRedirects(response, '/get_view/', msg_prefix='abc')
|
|
|
except AssertionError as e:
|
|
|
self.assertIn("abc: Response didn't redirect as expected: Response code was 200 (expected 302)", str(e))
|
|
|
|
|
@@ -439,22 +444,24 @@ class AssertRedirectsTests(TestCase):
|
|
|
"An assertion is raised if the response doesn't have the scheme specified in expected_url"
|
|
|
|
|
|
# Assure that original request scheme is preserved if no scheme specified in the redirect location
|
|
|
- response = self.client.get('/test_client/redirect_view/', secure=True)
|
|
|
- self.assertRedirects(response, 'https://testserver/test_client/get_view/')
|
|
|
+ response = self.client.get('/redirect_view/', secure=True)
|
|
|
+ self.assertRedirects(response, 'https://testserver/get_view/')
|
|
|
|
|
|
# For all possible True/False combinations of follow and secure
|
|
|
for follow, secure in itertools.product([True, False], repeat=2):
|
|
|
# always redirects to https
|
|
|
- response = self.client.get('/test_client/https_redirect_view/', follow=follow, secure=secure)
|
|
|
+ response = self.client.get('/https_redirect_view/', follow=follow, secure=secure)
|
|
|
# no scheme to compare too, always succeeds
|
|
|
- self.assertRedirects(response, '/test_client/secure_view/', status_code=301)
|
|
|
+ self.assertRedirects(response, '/secure_view/', status_code=301)
|
|
|
# the goal scheme is https
|
|
|
- self.assertRedirects(response, 'https://testserver/test_client/secure_view/', status_code=301)
|
|
|
+ self.assertRedirects(response, 'https://testserver/secure_view/', status_code=301)
|
|
|
with self.assertRaises(AssertionError):
|
|
|
- self.assertRedirects(response, 'http://testserver/test_client/secure_view/', status_code=301)
|
|
|
+ self.assertRedirects(response, 'http://testserver/secure_view/', status_code=301)
|
|
|
|
|
|
|
|
|
class AssertFormErrorTests(TestCase):
|
|
|
+ urls = 'test_client_regress.urls'
|
|
|
+
|
|
|
def test_unknown_form(self):
|
|
|
"An assertion is raised if the form name is unknown"
|
|
|
post_data = {
|
|
@@ -464,7 +471,7 @@ class AssertFormErrorTests(TestCase):
|
|
|
'single': 'b',
|
|
|
'multi': ('b', 'c', 'e')
|
|
|
}
|
|
|
- response = self.client.post('/test_client/form_view/', post_data)
|
|
|
+ response = self.client.post('/form_view/', post_data)
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
self.assertTemplateUsed(response, "Invalid POST Template")
|
|
|
|
|
@@ -486,7 +493,7 @@ class AssertFormErrorTests(TestCase):
|
|
|
'single': 'b',
|
|
|
'multi': ('b', 'c', 'e')
|
|
|
}
|
|
|
- response = self.client.post('/test_client/form_view/', post_data)
|
|
|
+ response = self.client.post('/form_view/', post_data)
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
self.assertTemplateUsed(response, "Invalid POST Template")
|
|
|
|
|
@@ -508,7 +515,7 @@ class AssertFormErrorTests(TestCase):
|
|
|
'single': 'b',
|
|
|
'multi': ('b', 'c', 'e')
|
|
|
}
|
|
|
- response = self.client.post('/test_client/form_view/', post_data)
|
|
|
+ response = self.client.post('/form_view/', post_data)
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
self.assertTemplateUsed(response, "Invalid POST Template")
|
|
|
|
|
@@ -530,7 +537,7 @@ class AssertFormErrorTests(TestCase):
|
|
|
'single': 'b',
|
|
|
'multi': ('b', 'c', 'e')
|
|
|
}
|
|
|
- response = self.client.post('/test_client/form_view/', post_data)
|
|
|
+ response = self.client.post('/form_view/', post_data)
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
self.assertTemplateUsed(response, "Invalid POST Template")
|
|
|
|
|
@@ -555,7 +562,7 @@ class AssertFormErrorTests(TestCase):
|
|
|
'single': 'b',
|
|
|
'multi': ('b', 'c', 'e')
|
|
|
}
|
|
|
- response = self.client.post('/test_client/form_view/', post_data)
|
|
|
+ response = self.client.post('/form_view/', post_data)
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
self.assertTemplateUsed(response, "Invalid POST Template")
|
|
|
|
|
@@ -570,6 +577,7 @@ class AssertFormErrorTests(TestCase):
|
|
|
|
|
|
|
|
|
class AssertFormsetErrorTests(TestCase):
|
|
|
+ urls = 'test_client_regress.urls'
|
|
|
msg_prefixes = [("", {}), ("abc: ", {"msg_prefix": "abc"})]
|
|
|
|
|
|
def setUp(self):
|
|
@@ -606,7 +614,7 @@ class AssertFormsetErrorTests(TestCase):
|
|
|
})
|
|
|
|
|
|
def getResponse(self, post_data):
|
|
|
- response = self.client.post('/test_client/formset_view/', post_data)
|
|
|
+ response = self.client.post('/formset_view/', post_data)
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
self.assertTemplateUsed(response, "Invalid POST Template")
|
|
|
return response
|
|
@@ -769,6 +777,7 @@ class ProcessedMiddleware(object):
|
|
|
|
|
|
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
|
|
|
class LoginTests(TestCase):
|
|
|
+ urls = 'test_client_regress.urls'
|
|
|
fixtures = ['testdata']
|
|
|
|
|
|
def test_login_different_client(self):
|
|
@@ -780,12 +789,12 @@ class LoginTests(TestCase):
|
|
|
self.assertTrue(login, 'Could not log in')
|
|
|
|
|
|
# Get a redirection page with the second client.
|
|
|
- response = c.get("/test_client_regress/login_protected_redirect_view/")
|
|
|
+ response = c.get("/login_protected_redirect_view/")
|
|
|
|
|
|
# At this points, the self.client isn't logged in.
|
|
|
# Check that assertRedirects uses the original client, not the
|
|
|
# default client.
|
|
|
- self.assertRedirects(response, "http://testserver/test_client_regress/get_view/")
|
|
|
+ self.assertRedirects(response, "http://testserver/get_view/")
|
|
|
|
|
|
@override_settings(
|
|
|
MIDDLEWARE_CLASSES=list(settings.MIDDLEWARE_CLASSES) +
|
|
@@ -811,6 +820,7 @@ class LoginTests(TestCase):
|
|
|
SESSION_ENGINE='test_client_regress.session'
|
|
|
)
|
|
|
class SessionEngineTests(TestCase):
|
|
|
+ urls = 'test_client_regress.urls'
|
|
|
fixtures = ['testdata']
|
|
|
|
|
|
def test_login(self):
|
|
@@ -819,12 +829,14 @@ class SessionEngineTests(TestCase):
|
|
|
self.assertTrue(login, 'Could not log in')
|
|
|
|
|
|
# Try to access a login protected page.
|
|
|
- response = self.client.get("/test_client/login_protected_view/")
|
|
|
+ response = self.client.get("/login_protected_view/")
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
self.assertEqual(response.context['user'].username, 'testclient')
|
|
|
|
|
|
|
|
|
class URLEscapingTests(TestCase):
|
|
|
+ urls = 'test_client_regress.urls'
|
|
|
+
|
|
|
def test_simple_argument_get(self):
|
|
|
"Get a view that has a simple string argument"
|
|
|
response = self.client.get(reverse('arg_view', args=['Slartibartfast']))
|
|
@@ -852,6 +864,7 @@ class URLEscapingTests(TestCase):
|
|
|
|
|
|
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
|
|
|
class ExceptionTests(TestCase):
|
|
|
+ urls = 'test_client_regress.urls'
|
|
|
fixtures = ['testdata.json']
|
|
|
|
|
|
def test_exception_cleared(self):
|
|
@@ -860,7 +873,7 @@ class ExceptionTests(TestCase):
|
|
|
login = self.client.login(username='testclient', password='password')
|
|
|
self.assertTrue(login, 'Could not log in')
|
|
|
try:
|
|
|
- self.client.get("/test_client_regress/staff_only/")
|
|
|
+ self.client.get("/staff_only/")
|
|
|
self.fail("General users should not be able to visit this page")
|
|
|
except CustomTestException:
|
|
|
pass
|
|
@@ -871,12 +884,14 @@ class ExceptionTests(TestCase):
|
|
|
login = self.client.login(username='staff', password='password')
|
|
|
self.assertTrue(login, 'Could not log in')
|
|
|
try:
|
|
|
- self.client.get("/test_client_regress/staff_only/")
|
|
|
+ self.client.get("/staff_only/")
|
|
|
except CustomTestException:
|
|
|
self.fail("Staff should be able to visit this page")
|
|
|
|
|
|
|
|
|
class TemplateExceptionTests(TestCase):
|
|
|
+ urls = 'test_client_regress.urls'
|
|
|
+
|
|
|
def setUp(self):
|
|
|
# Reset the loaders so they don't try to render cached templates.
|
|
|
if loader.template_source_loaders is not None:
|
|
@@ -911,19 +926,24 @@ class UrlconfSubstitutionTests(TestCase):
|
|
|
# This test needs to run *after* UrlconfSubstitutionTests; the zz prefix in the
|
|
|
# name is to ensure alphabetical ordering.
|
|
|
class zzUrlconfSubstitutionTests(TestCase):
|
|
|
+
|
|
|
def test_urlconf_was_reverted(self):
|
|
|
- "URLconf is reverted to original value after modification in a TestCase"
|
|
|
- url = reverse('arg_view', args=['somename'])
|
|
|
- self.assertEqual(url, '/test_client_regress/arg_view/somename/')
|
|
|
+ """URLconf is reverted to original value after modification in a TestCase
|
|
|
+
|
|
|
+ This will not find a match as the default ROOT_URLCONF is empty.
|
|
|
+ """
|
|
|
+ with self.assertRaises(NoReverseMatch):
|
|
|
+ reverse('arg_view', args=['somename'])
|
|
|
|
|
|
|
|
|
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
|
|
|
class ContextTests(TestCase):
|
|
|
+ urls = 'test_client_regress.urls'
|
|
|
fixtures = ['testdata']
|
|
|
|
|
|
def test_single_context(self):
|
|
|
"Context variables can be retrieved from a single context"
|
|
|
- response = self.client.get("/test_client_regress/request_data/", data={'foo': 'whiz'})
|
|
|
+ response = self.client.get("/request_data/", data={'foo': 'whiz'})
|
|
|
self.assertEqual(response.context.__class__, Context)
|
|
|
self.assertTrue('get-foo' in response.context)
|
|
|
self.assertEqual(response.context['get-foo'], 'whiz')
|
|
@@ -938,7 +958,7 @@ class ContextTests(TestCase):
|
|
|
|
|
|
def test_inherited_context(self):
|
|
|
"Context variables can be retrieved from a list of contexts"
|
|
|
- response = self.client.get("/test_client_regress/request_data_extended/", data={'foo': 'whiz'})
|
|
|
+ response = self.client.get("/request_data_extended/", data={'foo': 'whiz'})
|
|
|
self.assertEqual(response.context.__class__, ContextList)
|
|
|
self.assertEqual(len(response.context), 2)
|
|
|
self.assertTrue('get-foo' in response.context)
|
|
@@ -973,8 +993,8 @@ class ContextTests(TestCase):
|
|
|
# copying RequestContext.
|
|
|
try:
|
|
|
django.template.context._standard_context_processors = (lambda request: {'path': request.special_path},)
|
|
|
- response = self.client.get("/test_client_regress/request_context_view/")
|
|
|
- self.assertContains(response, 'Path: /test_client_regress/request_context_view/')
|
|
|
+ response = self.client.get("/request_context_view/")
|
|
|
+ self.assertContains(response, 'Path: /request_context_view/')
|
|
|
finally:
|
|
|
django.template.context._standard_context_processors = None
|
|
|
|
|
@@ -982,29 +1002,30 @@ class ContextTests(TestCase):
|
|
|
"""
|
|
|
response.context is not lost when view call another view.
|
|
|
"""
|
|
|
- response = self.client.get("/test_client_regress/nested_view/")
|
|
|
+ response = self.client.get("/nested_view/")
|
|
|
self.assertEqual(response.context.__class__, Context)
|
|
|
self.assertEqual(response.context['nested'], 'yes')
|
|
|
|
|
|
|
|
|
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
|
|
|
class SessionTests(TestCase):
|
|
|
+ urls = 'test_client_regress.urls'
|
|
|
fixtures = ['testdata.json']
|
|
|
|
|
|
def test_session(self):
|
|
|
"The session isn't lost if a user logs in"
|
|
|
# The session doesn't exist to start.
|
|
|
- response = self.client.get('/test_client_regress/check_session/')
|
|
|
+ response = self.client.get('/check_session/')
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
self.assertEqual(response.content, b'NO')
|
|
|
|
|
|
# This request sets a session variable.
|
|
|
- response = self.client.get('/test_client_regress/set_session/')
|
|
|
+ response = self.client.get('/set_session/')
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
self.assertEqual(response.content, b'set_session')
|
|
|
|
|
|
# Check that the session has been modified
|
|
|
- response = self.client.get('/test_client_regress/check_session/')
|
|
|
+ response = self.client.get('/check_session/')
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
self.assertEqual(response.content, b'YES')
|
|
|
|
|
@@ -1013,7 +1034,7 @@ class SessionTests(TestCase):
|
|
|
self.assertTrue(login, 'Could not log in')
|
|
|
|
|
|
# Session should still contain the modified value
|
|
|
- response = self.client.get('/test_client_regress/check_session/')
|
|
|
+ response = self.client.get('/check_session/')
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
self.assertEqual(response.content, b'YES')
|
|
|
|
|
@@ -1096,21 +1117,23 @@ class SessionTests(TestCase):
|
|
|
|
|
|
|
|
|
class RequestMethodTests(TestCase):
|
|
|
+ urls = 'test_client_regress.urls'
|
|
|
+
|
|
|
def test_get(self):
|
|
|
"Request a view via request method GET"
|
|
|
- response = self.client.get('/test_client_regress/request_methods/')
|
|
|
+ response = self.client.get('/request_methods/')
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
self.assertEqual(response.content, b'request method: GET')
|
|
|
|
|
|
def test_post(self):
|
|
|
"Request a view via request method POST"
|
|
|
- response = self.client.post('/test_client_regress/request_methods/')
|
|
|
+ response = self.client.post('/request_methods/')
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
self.assertEqual(response.content, b'request method: POST')
|
|
|
|
|
|
def test_head(self):
|
|
|
"Request a view via request method HEAD"
|
|
|
- response = self.client.head('/test_client_regress/request_methods/')
|
|
|
+ response = self.client.head('/request_methods/')
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
# A HEAD request doesn't return any content.
|
|
|
self.assertNotEqual(response.content, b'request method: HEAD')
|
|
@@ -1118,35 +1141,37 @@ class RequestMethodTests(TestCase):
|
|
|
|
|
|
def test_options(self):
|
|
|
"Request a view via request method OPTIONS"
|
|
|
- response = self.client.options('/test_client_regress/request_methods/')
|
|
|
+ response = self.client.options('/request_methods/')
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
self.assertEqual(response.content, b'request method: OPTIONS')
|
|
|
|
|
|
def test_put(self):
|
|
|
"Request a view via request method PUT"
|
|
|
- response = self.client.put('/test_client_regress/request_methods/')
|
|
|
+ response = self.client.put('/request_methods/')
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
self.assertEqual(response.content, b'request method: PUT')
|
|
|
|
|
|
def test_delete(self):
|
|
|
"Request a view via request method DELETE"
|
|
|
- response = self.client.delete('/test_client_regress/request_methods/')
|
|
|
+ response = self.client.delete('/request_methods/')
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
self.assertEqual(response.content, b'request method: DELETE')
|
|
|
|
|
|
def test_patch(self):
|
|
|
"Request a view via request method PATCH"
|
|
|
- response = self.client.patch('/test_client_regress/request_methods/')
|
|
|
+ response = self.client.patch('/request_methods/')
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
self.assertEqual(response.content, b'request method: PATCH')
|
|
|
|
|
|
|
|
|
class RequestMethodStringDataTests(TestCase):
|
|
|
+ urls = 'test_client_regress.urls'
|
|
|
+
|
|
|
def test_post(self):
|
|
|
"Request a view with string data via request method POST"
|
|
|
# Regression test for #11371
|
|
|
data = '{"test": "json"}'
|
|
|
- response = self.client.post('/test_client_regress/request_methods/', data=data, content_type='application/json')
|
|
|
+ response = self.client.post('/request_methods/', data=data, content_type='application/json')
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
self.assertEqual(response.content, b'request method: POST')
|
|
|
|
|
@@ -1154,7 +1179,7 @@ class RequestMethodStringDataTests(TestCase):
|
|
|
"Request a view with string data via request method PUT"
|
|
|
# Regression test for #11371
|
|
|
data = '{"test": "json"}'
|
|
|
- response = self.client.put('/test_client_regress/request_methods/', data=data, content_type='application/json')
|
|
|
+ response = self.client.put('/request_methods/', data=data, content_type='application/json')
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
self.assertEqual(response.content, b'request method: PUT')
|
|
|
|
|
@@ -1162,32 +1187,34 @@ class RequestMethodStringDataTests(TestCase):
|
|
|
"Request a view with string data via request method PATCH"
|
|
|
# Regression test for #17797
|
|
|
data = '{"test": "json"}'
|
|
|
- response = self.client.patch('/test_client_regress/request_methods/', data=data, content_type='application/json')
|
|
|
+ response = self.client.patch('/request_methods/', data=data, content_type='application/json')
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
self.assertEqual(response.content, b'request method: PATCH')
|
|
|
|
|
|
|
|
|
class QueryStringTests(TestCase):
|
|
|
+ urls = 'test_client_regress.urls'
|
|
|
+
|
|
|
def test_get_like_requests(self):
|
|
|
# See: https://code.djangoproject.com/ticket/10571.
|
|
|
for method_name in ('get', 'head'):
|
|
|
# A GET-like request can pass a query string as data
|
|
|
method = getattr(self.client, method_name)
|
|
|
- response = method("/test_client_regress/request_data/", data={'foo': 'whiz'})
|
|
|
+ response = method("/request_data/", data={'foo': 'whiz'})
|
|
|
self.assertEqual(response.context['get-foo'], 'whiz')
|
|
|
self.assertEqual(response.context['request-foo'], 'whiz')
|
|
|
|
|
|
# A GET-like request can pass a query string as part of the URL
|
|
|
- response = method("/test_client_regress/request_data/?foo=whiz")
|
|
|
+ response = method("/request_data/?foo=whiz")
|
|
|
self.assertEqual(response.context['get-foo'], 'whiz')
|
|
|
self.assertEqual(response.context['request-foo'], 'whiz')
|
|
|
|
|
|
# Data provided in the URL to a GET-like request is overridden by actual form data
|
|
|
- response = method("/test_client_regress/request_data/?foo=whiz", data={'foo': 'bang'})
|
|
|
+ response = method("/request_data/?foo=whiz", data={'foo': 'bang'})
|
|
|
self.assertEqual(response.context['get-foo'], 'bang')
|
|
|
self.assertEqual(response.context['request-foo'], 'bang')
|
|
|
|
|
|
- response = method("/test_client_regress/request_data/?foo=whiz", data={'bar': 'bang'})
|
|
|
+ response = method("/request_data/?foo=whiz", data={'bar': 'bang'})
|
|
|
self.assertEqual(response.context['get-foo'], None)
|
|
|
self.assertEqual(response.context['get-bar'], 'bang')
|
|
|
self.assertEqual(response.context['request-foo'], None)
|
|
@@ -1195,23 +1222,23 @@ class QueryStringTests(TestCase):
|
|
|
|
|
|
def test_post_like_requests(self):
|
|
|
# A POST-like request can pass a query string as data
|
|
|
- response = self.client.post("/test_client_regress/request_data/", data={'foo': 'whiz'})
|
|
|
+ response = self.client.post("/request_data/", data={'foo': 'whiz'})
|
|
|
self.assertEqual(response.context['get-foo'], None)
|
|
|
self.assertEqual(response.context['post-foo'], 'whiz')
|
|
|
|
|
|
# A POST-like request can pass a query string as part of the URL
|
|
|
- response = self.client.post("/test_client_regress/request_data/?foo=whiz")
|
|
|
+ response = self.client.post("/request_data/?foo=whiz")
|
|
|
self.assertEqual(response.context['get-foo'], 'whiz')
|
|
|
self.assertEqual(response.context['post-foo'], None)
|
|
|
self.assertEqual(response.context['request-foo'], 'whiz')
|
|
|
|
|
|
# POST data provided in the URL augments actual form data
|
|
|
- response = self.client.post("/test_client_regress/request_data/?foo=whiz", data={'foo': 'bang'})
|
|
|
+ response = self.client.post("/request_data/?foo=whiz", data={'foo': 'bang'})
|
|
|
self.assertEqual(response.context['get-foo'], 'whiz')
|
|
|
self.assertEqual(response.context['post-foo'], 'bang')
|
|
|
self.assertEqual(response.context['request-foo'], 'bang')
|
|
|
|
|
|
- response = self.client.post("/test_client_regress/request_data/?foo=whiz", data={'bar': 'bang'})
|
|
|
+ response = self.client.post("/request_data/?foo=whiz", data={'bar': 'bang'})
|
|
|
self.assertEqual(response.context['get-foo'], 'whiz')
|
|
|
self.assertEqual(response.context['get-bar'], None)
|
|
|
self.assertEqual(response.context['post-foo'], None)
|
|
@@ -1221,11 +1248,13 @@ class QueryStringTests(TestCase):
|
|
|
|
|
|
|
|
|
class UnicodePayloadTests(TestCase):
|
|
|
+ urls = 'test_client_regress.urls'
|
|
|
+
|
|
|
def test_simple_unicode_payload(self):
|
|
|
"A simple ASCII-only unicode JSON document can be POSTed"
|
|
|
# Regression test for #10571
|
|
|
json = '{"english": "mountain pass"}'
|
|
|
- response = self.client.post("/test_client_regress/parse_unicode_json/", json,
|
|
|
+ response = self.client.post("/parse_unicode_json/", json,
|
|
|
content_type="application/json")
|
|
|
self.assertEqual(response.content, json.encode())
|
|
|
|
|
@@ -1233,7 +1262,7 @@ class UnicodePayloadTests(TestCase):
|
|
|
"A non-ASCII unicode data encoded as UTF-8 can be POSTed"
|
|
|
# Regression test for #10571
|
|
|
json = '{"dog": "собака"}'
|
|
|
- response = self.client.post("/test_client_regress/parse_unicode_json/", json,
|
|
|
+ response = self.client.post("/parse_unicode_json/", json,
|
|
|
content_type="application/json; charset=utf-8")
|
|
|
self.assertEqual(response.content, json.encode('utf-8'))
|
|
|
|
|
@@ -1241,7 +1270,7 @@ class UnicodePayloadTests(TestCase):
|
|
|
"A non-ASCII unicode data encoded as UTF-16 can be POSTed"
|
|
|
# Regression test for #10571
|
|
|
json = '{"dog": "собака"}'
|
|
|
- response = self.client.post("/test_client_regress/parse_unicode_json/", json,
|
|
|
+ response = self.client.post("/parse_unicode_json/", json,
|
|
|
content_type="application/json; charset=utf-16")
|
|
|
self.assertEqual(response.content, json.encode('utf-16'))
|
|
|
|
|
@@ -1249,7 +1278,7 @@ class UnicodePayloadTests(TestCase):
|
|
|
"A non-ASCII unicode data as a non-UTF based encoding can be POSTed"
|
|
|
# Regression test for #10571
|
|
|
json = '{"dog": "собака"}'
|
|
|
- response = self.client.post("/test_client_regress/parse_unicode_json/", json,
|
|
|
+ response = self.client.post("/parse_unicode_json/", json,
|
|
|
content_type="application/json; charset=koi8-r")
|
|
|
self.assertEqual(response.content, json.encode('koi8-r'))
|
|
|
|
|
@@ -1284,11 +1313,12 @@ class UploadedFileEncodingTest(TestCase):
|
|
|
|
|
|
|
|
|
class RequestHeadersTest(TestCase):
|
|
|
+ urls = 'test_client_regress.urls'
|
|
|
fixtures = ['testdata']
|
|
|
|
|
|
def test_client_headers(self):
|
|
|
"A test client can receive custom headers"
|
|
|
- response = self.client.get("/test_client_regress/check_headers/", HTTP_X_ARG_CHECK='Testing 123')
|
|
|
+ response = self.client.get("/check_headers/", HTTP_X_ARG_CHECK='Testing 123')
|
|
|
self.assertEqual(response.content, b"HTTP_X_ARG_CHECK: Testing 123")
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
|
@@ -1312,9 +1342,9 @@ class RequestHeadersTest(TestCase):
|
|
|
|
|
|
def test_client_headers_redirect(self):
|
|
|
"Test client headers are preserved through redirects"
|
|
|
- response = self.client.get("/test_client_regress/check_headers_redirect/", follow=True, HTTP_X_ARG_CHECK='Testing 123')
|
|
|
+ response = self.client.get("/check_headers_redirect/", follow=True, HTTP_X_ARG_CHECK='Testing 123')
|
|
|
self.assertEqual(response.content, b"HTTP_X_ARG_CHECK: Testing 123")
|
|
|
- self.assertRedirects(response, '/test_client_regress/check_headers/',
|
|
|
+ self.assertRedirects(response, '/check_headers/',
|
|
|
status_code=301, target_status_code=200)
|
|
|
|
|
|
|
|
@@ -1325,28 +1355,29 @@ class ReadLimitedStreamTest(TestCase):
|
|
|
|
|
|
Refs #14753, #15785
|
|
|
"""
|
|
|
+ urls = 'test_client_regress.urls'
|
|
|
|
|
|
def test_body_from_empty_request(self):
|
|
|
"""HttpRequest.body on a test client GET request should return
|
|
|
the empty string."""
|
|
|
- self.assertEqual(self.client.get("/test_client_regress/body/").content, b'')
|
|
|
+ self.assertEqual(self.client.get("/body/").content, b'')
|
|
|
|
|
|
def test_read_from_empty_request(self):
|
|
|
"""HttpRequest.read() on a test client GET request should return the
|
|
|
empty string."""
|
|
|
- self.assertEqual(self.client.get("/test_client_regress/read_all/").content, b'')
|
|
|
+ self.assertEqual(self.client.get("/read_all/").content, b'')
|
|
|
|
|
|
def test_read_numbytes_from_empty_request(self):
|
|
|
"""HttpRequest.read(LARGE_BUFFER) on a test client GET request should
|
|
|
return the empty string."""
|
|
|
- self.assertEqual(self.client.get("/test_client_regress/read_buffer/").content, b'')
|
|
|
+ self.assertEqual(self.client.get("/read_buffer/").content, b'')
|
|
|
|
|
|
def test_read_from_nonempty_request(self):
|
|
|
"""HttpRequest.read() on a test client PUT request with some payload
|
|
|
should return that payload."""
|
|
|
payload = b'foobar'
|
|
|
self.assertEqual(self.client.put(
|
|
|
- "/test_client_regress/read_all/",
|
|
|
+ "/read_all/",
|
|
|
data=payload,
|
|
|
content_type='text/plain').content, payload)
|
|
|
|
|
@@ -1355,7 +1386,7 @@ class ReadLimitedStreamTest(TestCase):
|
|
|
some payload should return that payload."""
|
|
|
payload = b'foobar'
|
|
|
self.assertEqual(
|
|
|
- self.client.put("/test_client_regress/read_buffer/",
|
|
|
+ self.client.put("/read_buffer/",
|
|
|
data=payload,
|
|
|
content_type='text/plain').content, payload)
|
|
|
|
|
@@ -1367,6 +1398,7 @@ class RequestFactoryStateTest(TestCase):
|
|
|
# ensuring test isolation behavior. So, unusually, it doesn't make sense to
|
|
|
# run the tests individually, and if any are failing it is confusing to run
|
|
|
# them with any other set of tests.
|
|
|
+ urls = 'test_client_regress.urls'
|
|
|
|
|
|
def common_test_that_should_always_pass(self):
|
|
|
request = RequestFactory().get('/')
|
|
@@ -1391,6 +1423,7 @@ class RequestFactoryEnvironmentTests(TestCase):
|
|
|
Regression tests for #8551 and #17067: ensure that environment variables
|
|
|
are set correctly in RequestFactory.
|
|
|
"""
|
|
|
+ urls = 'test_client_regress.urls'
|
|
|
|
|
|
def test_should_set_correct_env_variables(self):
|
|
|
request = RequestFactory().get('/path/')
|