summaryrefslogtreecommitdiff
path: root/tests/regressiontests/requests/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/regressiontests/requests/tests.py')
-rw-r--r--tests/regressiontests/requests/tests.py90
1 files changed, 90 insertions, 0 deletions
diff --git a/tests/regressiontests/requests/tests.py b/tests/regressiontests/requests/tests.py
index 556d61e2ce..acae5f479b 100644
--- a/tests/regressiontests/requests/tests.py
+++ b/tests/regressiontests/requests/tests.py
@@ -2,11 +2,13 @@ from datetime import datetime, timedelta
import time
import unittest
+from django.conf import settings
from django.http import HttpRequest, HttpResponse, parse_cookie
from django.core.handlers.wsgi import WSGIRequest
from django.core.handlers.modpython import ModPythonRequest
from django.utils.http import cookie_date
+
class RequestsTests(unittest.TestCase):
def test_httprequest(self):
@@ -57,3 +59,91 @@ class RequestsTests(unittest.TestCase):
request.path = ''
self.assertEqual(request.build_absolute_uri(location="/path/with:colons"),
'http://www.example.com/path/with:colons')
+
+ def test_http_get_host(self):
+ old_USE_X_FORWARDED_HOST = settings.USE_X_FORWARDED_HOST
+ try:
+ settings.USE_X_FORWARDED_HOST = False
+
+ # Check if X_FORWARDED_HOST is provided.
+ request = HttpRequest()
+ request.META = {
+ u'HTTP_X_FORWARDED_HOST': u'forward.com',
+ u'HTTP_HOST': u'example.com',
+ u'SERVER_NAME': u'internal.com',
+ u'SERVER_PORT': 80,
+ }
+ # X_FORWARDED_HOST is ignored.
+ self.assertEqual(request.get_host(), 'example.com')
+
+ # Check if X_FORWARDED_HOST isn't provided.
+ request = HttpRequest()
+ request.META = {
+ u'HTTP_HOST': u'example.com',
+ u'SERVER_NAME': u'internal.com',
+ u'SERVER_PORT': 80,
+ }
+ self.assertEqual(request.get_host(), 'example.com')
+
+ # Check if HTTP_HOST isn't provided.
+ request = HttpRequest()
+ request.META = {
+ u'SERVER_NAME': u'internal.com',
+ u'SERVER_PORT': 80,
+ }
+ self.assertEqual(request.get_host(), 'internal.com')
+
+ # Check if HTTP_HOST isn't provided, and we're on a nonstandard port
+ request = HttpRequest()
+ request.META = {
+ u'SERVER_NAME': u'internal.com',
+ u'SERVER_PORT': 8042,
+ }
+ self.assertEqual(request.get_host(), 'internal.com:8042')
+
+ finally:
+ settings.USE_X_FORWARDED_HOST = old_USE_X_FORWARDED_HOST
+
+ def test_http_get_host_with_x_forwarded_host(self):
+ old_USE_X_FORWARDED_HOST = settings.USE_X_FORWARDED_HOST
+ try:
+ settings.USE_X_FORWARDED_HOST = True
+
+ # Check if X_FORWARDED_HOST is provided.
+ request = HttpRequest()
+ request.META = {
+ u'HTTP_X_FORWARDED_HOST': u'forward.com',
+ u'HTTP_HOST': u'example.com',
+ u'SERVER_NAME': u'internal.com',
+ u'SERVER_PORT': 80,
+ }
+ # X_FORWARDED_HOST is obeyed.
+ self.assertEqual(request.get_host(), 'forward.com')
+
+ # Check if X_FORWARDED_HOST isn't provided.
+ request = HttpRequest()
+ request.META = {
+ u'HTTP_HOST': u'example.com',
+ u'SERVER_NAME': u'internal.com',
+ u'SERVER_PORT': 80,
+ }
+ self.assertEqual(request.get_host(), 'example.com')
+
+ # Check if HTTP_HOST isn't provided.
+ request = HttpRequest()
+ request.META = {
+ u'SERVER_NAME': u'internal.com',
+ u'SERVER_PORT': 80,
+ }
+ self.assertEqual(request.get_host(), 'internal.com')
+
+ # Check if HTTP_HOST isn't provided, and we're on a nonstandard port
+ request = HttpRequest()
+ request.META = {
+ u'SERVER_NAME': u'internal.com',
+ u'SERVER_PORT': 8042,
+ }
+ self.assertEqual(request.get_host(), 'internal.com:8042')
+
+ finally:
+ settings.USE_X_FORWARDED_HOST = old_USE_X_FORWARDED_HOST