Как установить идентичность Flask-Principal в юнит-тесте?

Я тестирую приложение Flask, которое использует Flask-Principal для разрешений на основе ролей, а также для детальной защиты ресурсов. Я не уверен, как справиться с установкой личности в почтовых запросах. Я использую стратегию тестирования, изложенную в этом другом посте Flask-Principal. Я использую метод строки запроса для получения запросов и в пост-запросах я изменил query_string на заголовки. Запросы get проходят, но все запросы post завершаются с ошибкой разрешения.

def test_admin(self):
    r = self.client.get('/admin')
    self.assertEqual(r.status_code, 403)
    #
    r = self.client.get('/admin', query_string={'idname': "member"})
    self.assertEqual(r.status_code, 403)
    #
    r = self.client.get('/admin', query_string={'idname': "admin"})
    self.assertEqual(r.status_code, 200)
    self.assertEqual(r.data, "OK")

Любая помощь или понимание будут оценены. Я думаю, что частью моей проблемы является отсутствие понимания того, как и где устанавливается личность.

1 ответ

Как выясняется, идентификатор Flask-Principal был правильно установлен с использованием строки query_string во время тестов, включающих почтовые запросы. Проблема заключалась в том, что follow_redirects в запросе было установлено значение True и идентификация не загружалась при перенаправлении. Я удалил перенаправление и проверил, что почтовые запросы работали, проверив базу данных.

Другие вопросы по тегам