У меня есть API, основанный на Flask, который получает токен доступа в заголовке. Это отлично работает.
В своем коде я проверяю, доступен ли заголовок, иначе это 403 Запрещенный доступ.
if 'Access-Token' in request.headers:
token = request.headers['Access-Token']
else:
return make_response('[HTTP_403_FORBIDDEN]', HttpStatusCode.HTTP_403_FORBIDDEN)
Теперь я пишу юнит-тест, и я застрял в request.headers
. Я использую test_request_context()
, но я не могу добавить какое-либо значение к заголовкам, так как оно является неизменным.
Я также попробовал этот подход:
with app.test_request_context(environ_base={'Access-Token': token}):
, который добавляет заголовок к environ
, но не в request.headers
, вот где я немного растерялся.
Другой вариант - смоделировать исправление запроса, но тогда мне не нужен контекст.
Итак, как мне выполнить юнит-тест if 'Access-Token' in request.headers:
с test_request_context
?
РЕДАКТИРОВАТЬ:
Я узнал, как установить заголовок по этой ссылке:
https://gist.github.com/pgjones/0bd192d3fae7f6dfadead178dbac0e1e `
В принципе это werkzeug.http
соглашение для установки ключей в словаре окружения:
Если вы хотите добавить заголовок имя ключа Access-Token
, имя ключа environment_base должно называться HTTP_ACCESS_TOKEN
Вот как теперь выглядит код:
with self.app.test_request_context(environ_base={'HTTP_ACCESS_TOKEN': token}):
Теперь условие if 'Access-Token' in request.headers:
работает и возвращает true