我正在使用朋友来保护我的 Web 应用程序中的某些页面,到目前为止它运行良好。不过,我的测试代码遇到了问题:我似乎无法绕过身份验证机制或模拟朋友的授权调用。到目前为止我尝试过的事情:
- 使用包含身份验证信息的映射包装请求
- 使用 midje/provided 模拟给朋友/授权的电话
第一种方法似乎不起作用,因为我不确定我需要向请求中添加什么,而第二种方法似乎不起作用,因为 midje 似乎根本看不到对朋友/授权的调用. 相关事实如下所示:
(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)))
这是相应的(正在运行的)组合路由:
(GET "/user" [] (friend/authorize #{::admin} users))
我基本上friend/authorize
在 midje 事实中对呼叫进行了宏扩展,但由于授权,我仍然得到两个 FAILS。在添加授权之前测试成功,所以这确实是我需要解决的朋友授权部分。
有没有解决这个问题的最佳实践?