Добавление заголовка запроса в test_request_context в Flask модульном тесте - PullRequest
0 голосов
/ 06 марта 2020

У меня есть 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

...