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