summaryrefslogtreecommitdiff
path: root/tests/sites_tests
diff options
context:
space:
mode:
authorNick Pope <nick@nickpope.me.uk>2015-05-03 23:08:28 +0100
committerTim Graham <timograham@gmail.com>2015-06-18 10:18:12 -0400
commitb3d5dc6932bf896a909e9871d508654494b34563 (patch)
treed995b27a4f985faa8b3edcb98c38ba2cf799f817 /tests/sites_tests
parent7f1168e387dc1db70b6093cfd23a4a6978f48109 (diff)
downloaddjango-b3d5dc6932bf896a909e9871d508654494b34563.tar.gz
Fixed #24834 -- Fixed get_current_site() when Host header contains port.
When the Host header contains a port, looking up the Site record fails as the host will never match the domain.
Diffstat (limited to 'tests/sites_tests')
-rw-r--r--tests/sites_tests/tests.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/sites_tests/tests.py b/tests/sites_tests/tests.py
index 563ee6a681..7d5dcf10bb 100644
--- a/tests/sites_tests/tests.py
+++ b/tests/sites_tests/tests.py
@@ -86,6 +86,41 @@ class SitesFrameworkTests(TestCase):
site = get_current_site(request)
self.assertEqual(site.name, "example.com")
+ @override_settings(SITE_ID='', ALLOWED_HOSTS=['example.com', 'example.net'])
+ def test_get_current_site_no_site_id_and_handle_port_fallback(self):
+ request = HttpRequest()
+ s1 = self.site
+ s2 = Site.objects.create(domain='example.com:80', name='example.com:80')
+
+ # Host header without port
+ request.META = {'HTTP_HOST': 'example.com'}
+ site = get_current_site(request)
+ self.assertEqual(site, s1)
+
+ # Host header with port - match, no fallback without port
+ request.META = {'HTTP_HOST': 'example.com:80'}
+ site = get_current_site(request)
+ self.assertEqual(site, s2)
+
+ # Host header with port - no match, fallback without port
+ request.META = {'HTTP_HOST': 'example.com:81'}
+ site = get_current_site(request)
+ self.assertEqual(site, s1)
+
+ # Host header with non-matching domain
+ request.META = {'HTTP_HOST': 'example.net'}
+ self.assertRaises(ObjectDoesNotExist, get_current_site, request)
+
+ # Ensure domain for RequestSite always matches host header
+ with self.modify_settings(INSTALLED_APPS={'remove': 'django.contrib.sites'}):
+ request.META = {'HTTP_HOST': 'example.com'}
+ site = get_current_site(request)
+ self.assertEqual(site.name, 'example.com')
+
+ request.META = {'HTTP_HOST': 'example.com:80'}
+ site = get_current_site(request)
+ self.assertEqual(site.name, 'example.com:80')
+
def test_domain_name_with_whitespaces(self):
# Regression for #17320
# Domain names are not allowed contain whitespace characters