2011-06-01 41 views
0

实际上,我在寻找的所有东西都在标题中说过 - 我需要在测试中访问warden用户变量以检查身份验证是否正常工作。另一种方法是也可能对我来说,只是想测试很好:)认证在Sinatra测试响应中访问执行官登录信息

should "authenticate" do 
    post "/login", {:login => "test_login", :password => "password"}, {"HTTP_HOST" => "test.host"} 
    assert last_response.redirect? 
    assert_equal last_response.env["warden"].user.login, "test_login" 
end 

回答

0

你不能在一个机架的测试风格的全栈测试的内部请求环境得到。如果您想验证您是否以特定用户身份登录,则需要查看重定向网址(如果它重定向到用户可识别的URL)或遵循重定向(易于使用rack-testfollow_redirect!助手),然后在HTML中查找用户标识的证据。我会认为你并不是真的需要测试守望者本身,但是你需要确保你提供了正确的信息,并且不会在中间件堆栈中对其进行修改。

你可能会发现像Cucumber这样的东西,方便做真正的表格填写和提交。

最后,督导员有自己的测试佣工(这肯定与rack-test工作),所以你可以设置一个请求被登录,而无需实际通过日志记录中要求运行/在每个测试重定向循环 - https://github.com/hassox/warden/wiki/testing有更多细节。