Django SECURE_SSL_REDIRECT и 301 HTTP-ответов

В средах, отличных от местных, я установил DJ_SSL_REDIRECT = True для моего проекта Django.

Но теперь все мои модульные тесты, связанные с конечными точками REST API, не прошли, когда они выполняются в другой среде (например, в Travis CI).

Происходит то, что все ответы HTTP 301 (Я ожидаю 2XX или же 4XX в моих тестах) из-за DJ_SSL_REDIRECT установка, как описано в документе:

Если для параметра SECURE_SSL_REDIRECT задано значение True, SecurityMiddleware будет постоянно (HTTP 301) перенаправлять все HTTP-соединения на HTTPS.

Как я могу справиться с этим простым способом, поддерживая мои юнит-тесты актуальными? Благодарю.

Примечание: я использую Django Rest Framework 3.5

2 ответа

У меня была похожая проблема, и я решил ее, используя атрибут "secure" для тестирования клиента после получения таких функций, как

    response = self.client.post('/accounts/signup/', self.getvalues(), follow=True, secure=True)

Надеюсь это поможет!

Микко

Вы можете установить SECURE_SSL_REDIRECT в зависимости от того, вызывается ли код manage.py test, Поместите это в ваши settings.py:

# Are we testing? i.e. was this code run via "manage.py test"
TESTING = len(sys.argv) > 1 and sys.argv[1] == 'test'
SECURE_SSL_REDIRECT = False if TESTING else True
Другие вопросы по тегам