gpt4 book ai didi

authentication - 使用 Friend 忽略 Clojure Web 应用程序单元测试中的身份验证?

转载 作者:行者123 更新时间:2023-11-28 21:12:07 25 4
gpt4 key购买 nike

我正在使用 friend 来保护我的 Web 应用程序中的某些页面,到目前为止它运行良好。不过,我的测试代码遇到了问题:我似乎无法绕过身份验证机制或模拟 friend 的授权调用。到目前为止我尝试过的事情:

  • 用包含身份验证信息的映射包装请求
  • 使用 midje/provided 模拟调用 friend/authorize

第一种方法似乎不起作用,因为我不确定我需要向请求中添加什么,而第二种方法似乎不起作用,因为 midje 似乎没有看到对 friend 的调用/完全授权。相关事实如下所示:

(fact "The users page can be fetched successfully"
(let [req (request :get "/user")
response (app req)]
(:body response) => #"(some results)"
(provided
(friend/authorized? anything anything) => true)))

这是相应的(正在运行的)compojure 路由:

(GET "/user" [] (friend/authorize #{::admin} users))

我基本上宏扩展了 midje 事实中的 friend/authorize 调用,但由于授权,我仍然在事实上遇到两次失败。在添加授权之前测试成功运行,所以它真的是我需要解决的 friend 授权部分。

是否有任何最佳实践可以解决这个问题?

最佳答案

事实证明,我对 Midje 的提供的 功能过于乐观。它与一个可检查项紧密相关,假设模拟代码在可检查项的过程中被调用。 IE。以下现在对我有用:

(fact "The users page can be fetched successfully" 
(app (request :get "/user")) => (contains {:status 200})
(provided
(friend/authorized? anything anything) => true))

关于authentication - 使用 Friend 忽略 Clojure Web 应用程序单元测试中的身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21042577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com