Django RequestFactory добавить HTTP_X_FORWARDED_FOR - PullRequest
0 голосов
/ 24 мая 2018

У меня есть этот блок кода, для которого я пытаюсь написать тесты:

def get_client_ip(req):
    """
    This is used to get the user's IP from the request object.

    """
    x_forwarded_for = req.META.get('HTTP_X_FORWARDED_FOR')
    if x_forwarded_for:
        ip = x_forwarded_for.split(',')[0]
    else:
        ip = req.META.get('REMOTE_ADDR', "unknown")
    return ip

До сих пор я был в состоянии проверить секцию else оператора if.Вот как выглядит мой тест:

def test_get_client_ip(self):
    """
    Test the get Client IP fuction with a request.

    """
    # Create an instance of a GET request.
    request = self.factory.get('/home')
    ip = get_client_ip(request)
    self.assertEqual(ip, '127.0.0.1')

Как мне добавить «HTTP_X_FORWARDED_FOR» в META объекта запроса?

1 Ответ

0 голосов
/ 24 мая 2018

Оказывается, вы можете задать запрос на получение дополнительных заголовков, используя дополнительное ключевое слово в методе get: https://docs.djangoproject.com/en/2.0/topics/testing/tools/#django.test.Client.get

Рабочий код выглядит следующим образом:

    def test_get_client_ip(self):
    """
    Test the get Client IP fuction with a request.

    """
    # Create an instance of a GET request.
    request = self.factory.get('/home')
    ip = get_client_ip(request)
    self.assertEqual(ip, '127.0.0.1')
    request = self.factory.get('/home', HTTP_X_FORWARDED_FOR="8.8.8.8")
    ip = get_client_ip(request)
    self.assertEqual(ip, '8.8.8.8')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...