diff options
author | Nick Pope <nick@nickpope.me.uk> | 2015-05-03 23:08:28 +0100 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2015-06-18 10:18:12 -0400 |
commit | b3d5dc6932bf896a909e9871d508654494b34563 (patch) | |
tree | d995b27a4f985faa8b3edcb98c38ba2cf799f817 /tests/sites_tests | |
parent | 7f1168e387dc1db70b6093cfd23a4a6978f48109 (diff) | |
download | django-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.py | 35 |
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 |