модульный тест flask: как проверить запрос от зарегистрированного пользователя

Я пишу некоторые модульные тесты для моего веб-приложения Flask, и я пытаюсь проверить различия в ответе между запросом, сделанным анонимным пользователем и зарегистрированным пользователем.

Я использую Flask-Login расширение для реализации входа/выхода пользователя.

очевидно, что я могу выполнить анонимный запрос, но как имитировать запрос от зарегистрированного пользователя?

Я думал, что достаточно отправить в заголовки session cookie, но это не рабочий.

headers = Headers({'Cookie':['WEBSITE_ID=%s; Domain=adsabs.harvard.edu; expires=Thu, 25-Apr-2213 16:53:22 GMT; Path=/' % cookie_value, 
                             'WEBSITE_ID=%s; Domain=.adsabs.harvard.edu; expires=Thu, 25-Apr-2213 16:53:22 GMT; Path=/' % cookie_value,
                             'session="A VERY LONG STRING"; Path=/; HttpOnly',
                 ]})
rv = app.test_client().get('/', headers=headers)

где значение cookie сеанса-это значение, которое я получил от реального входа в мой браузер.

что я упустил?

1 ответов


колба-логин ищет user_id в сеансе вы можете установить это в тестах, используя session_transaction:

with app.test_client() as c:
    with c.session_transaction() as sess:
        sess['user_id'] = 'myuserid'
        sess['_fresh'] = True # https://flask-login.readthedocs.org/en/latest/#fresh-logins
    resp = c.get('/someurl')

здесь myuserid - идентификатор объект.