mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Refs #26666 -- Added ALLOWED_HOSTS validation when running tests.
Also used ALLOWED_HOSTS to check for external hosts in assertRedirects().
This commit is contained in:
committed by
Tim Graham
parent
00551c3eff
commit
17e661641d
1
tests/cache/tests.py
vendored
1
tests/cache/tests.py
vendored
@@ -1393,6 +1393,7 @@ class DefaultNonExpiringCacheKeyTests(SimpleTestCase):
|
||||
},
|
||||
},
|
||||
USE_I18N=False,
|
||||
ALLOWED_HOSTS=['.example.com'],
|
||||
)
|
||||
class CacheUtils(SimpleTestCase):
|
||||
"""TestCase for django.utils.cache functions."""
|
||||
|
||||
@@ -142,6 +142,7 @@ class SitesFrameworkTests(TestCase):
|
||||
with self.assertRaises(ValidationError):
|
||||
site.full_clean()
|
||||
|
||||
@override_settings(ALLOWED_HOSTS=['example.com'])
|
||||
def test_clear_site_cache(self):
|
||||
request = HttpRequest()
|
||||
request.META = {
|
||||
@@ -162,7 +163,7 @@ class SitesFrameworkTests(TestCase):
|
||||
clear_site_cache(Site, instance=self.site, using='default')
|
||||
self.assertEqual(models.SITE_CACHE, {})
|
||||
|
||||
@override_settings(SITE_ID='')
|
||||
@override_settings(SITE_ID='', ALLOWED_HOSTS=['example2.com'])
|
||||
def test_clear_site_cache_domain(self):
|
||||
site = Site.objects.create(name='example2.com', domain='example2.com')
|
||||
request = HttpRequest()
|
||||
@@ -191,6 +192,7 @@ class SitesFrameworkTests(TestCase):
|
||||
self.assertEqual(Site.objects.get_by_natural_key(self.site.domain), self.site)
|
||||
self.assertEqual(self.site.natural_key(), (self.site.domain,))
|
||||
|
||||
@override_settings(ALLOWED_HOSTS=['example.com'])
|
||||
def test_requestsite_save_notimplemented_msg(self):
|
||||
# Test response msg for RequestSite.save NotImplementedError
|
||||
request = HttpRequest()
|
||||
@@ -201,6 +203,7 @@ class SitesFrameworkTests(TestCase):
|
||||
with self.assertRaisesMessage(NotImplementedError, msg):
|
||||
RequestSite(request).save()
|
||||
|
||||
@override_settings(ALLOWED_HOSTS=['example.com'])
|
||||
def test_requestsite_delete_notimplemented_msg(self):
|
||||
# Test response msg for RequestSite.delete NotImplementedError
|
||||
request = HttpRequest()
|
||||
|
||||
@@ -35,9 +35,9 @@ class LiveServerBase(StaticLiveServerTestCase):
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
super(LiveServerBase, cls).tearDownClass()
|
||||
# Restore original settings
|
||||
cls.settings_override.disable()
|
||||
super(LiveServerBase, cls).tearDownClass()
|
||||
|
||||
|
||||
class StaticLiveServerChecks(LiveServerBase):
|
||||
|
||||
@@ -601,7 +601,13 @@ class ClientTest(TestCase):
|
||||
a relevant ValueError rather than a non-descript AssertionError.
|
||||
"""
|
||||
response = self.client.get('/django_project_redirect/')
|
||||
with self.assertRaisesMessage(ValueError, 'unable to fetch'):
|
||||
msg = (
|
||||
"The test client is unable to fetch remote URLs (got "
|
||||
"https://www.djangoproject.com/). If the host is served by Django, "
|
||||
"add 'www.djangoproject.com' to ALLOWED_HOSTS. "
|
||||
"Otherwise, use assertRedirects(..., fetch_redirect_response=False)."
|
||||
)
|
||||
with self.assertRaisesMessage(ValueError, msg):
|
||||
self.assertRedirects(response, 'https://www.djangoproject.com/')
|
||||
|
||||
def test_session_modifying_view(self):
|
||||
|
||||
@@ -15,7 +15,8 @@ from django.template import (
|
||||
)
|
||||
from django.template.response import SimpleTemplateResponse
|
||||
from django.test import (
|
||||
Client, SimpleTestCase, TestCase, ignore_warnings, override_settings,
|
||||
Client, SimpleTestCase, TestCase, ignore_warnings, modify_settings,
|
||||
override_settings,
|
||||
)
|
||||
from django.test.client import RedirectCycleError, RequestFactory, encode_file
|
||||
from django.test.utils import ContextList, str_prefix
|
||||
@@ -455,6 +456,7 @@ class AssertRedirectsTests(SimpleTestCase):
|
||||
self.assertRedirects(response, '/no_template_view/', 302, 200)
|
||||
self.assertEqual(len(response.redirect_chain), 3)
|
||||
|
||||
@modify_settings(ALLOWED_HOSTS={'append': 'otherserver'})
|
||||
def test_redirect_to_different_host(self):
|
||||
"The test client will preserve scheme, host and port changes"
|
||||
response = self.client.get('/redirect_other_host/', follow=True)
|
||||
@@ -467,6 +469,12 @@ class AssertRedirectsTests(SimpleTestCase):
|
||||
self.assertEqual(response.request.get('wsgi.url_scheme'), 'https')
|
||||
self.assertEqual(response.request.get('SERVER_NAME'), 'otherserver')
|
||||
self.assertEqual(response.request.get('SERVER_PORT'), '8443')
|
||||
# assertRedirects() can follow redirect to 'otherserver' too.
|
||||
response = self.client.get('/redirect_other_host/', follow=False)
|
||||
self.assertRedirects(
|
||||
response, 'https://otherserver:8443/no_template_view/',
|
||||
status_code=302, target_status_code=200
|
||||
)
|
||||
|
||||
def test_redirect_chain_on_non_redirect_page(self):
|
||||
"An assertion is raised if the original page couldn't be retrieved as expected"
|
||||
|
||||
Reference in New Issue
Block a user