如何在单元测试中设置Flask-Principal身份?

时间:2014-07-08 16:12:56

标签: python flask pytest flask-principal

我正在测试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")

任何帮助或见解将不胜感激。我认为我的问题的一部分是缺乏对如何以及在何处设置身份的理解。

1 个答案:

答案 0 :(得分:0)

事实证明,在涉及发布请求的测试期间,使用query_string正确设置了Flask-Principal Identity。问题是请求中的follow_redirects设置为True,并且未在重定向上加载Identity。我删除了重定向并通过检查数据库验证了帖子请求是否正常工作。