Как установить идентичность 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 и идентификация не загружалась при перенаправлении. Я удалил перенаправление и проверил, что почтовые запросы работали, проверив базу данных.