我正在测试Flask应用程序,该应用程序使用Flask-Principal进行基于角色的权限以及粒度资源保护。我不确定如何处理在帖子请求中设置身份。我正在使用其他Flask-Principal post中概述的测试策略。我正在使用查询字符串方法来获取请求,在post请求中我将query_string更改为标头。 get请求通过,但所有发布请求都失败并且权限被拒绝。
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")
任何帮助或见解将不胜感激。我认为我的问题的一部分是缺乏对如何以及在何处设置身份的理解。
答案 0 :(得分:0)
事实证明,在涉及发布请求的测试期间,使用query_string正确设置了Flask-Principal Identity。问题是请求中的follow_redirects
设置为True,并且未在重定向上加载Identity。我删除了重定向并通过检查数据库验证了帖子请求是否正常工作。