在Sinatra测试响应中访问warden登录信息

时间:2011-06-01 14:29:35

标签: ruby sinatra warden

实际上我要查找的所有内容都在标题中说明 - 我需要在test中访问warden用户变量以检查身份验证是否有效。另一种方式对我来说也是可能的,只是尝试很好地测试身份验证:)

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

1 个答案:

答案 0 :(得分:0)

您无法在机架测试式全栈测试中进入内部请求环境。如果您想验证您是否以特定用户身份登录,则需要查看重定向URL(如果它重定向到用户可识别的URL)或遵循重定向(轻松使用{{1} } rack-test帮助器),然后在HTML中查找用户ID的证据。

我原以为你不需要测试Warden本身,但是你需要确保向它提供正确的信息,而不是在中间件堆栈中将其破坏。

你可能会发现像Cucumber这样的东西可以用来做真正的填表和提交。

最后,Warden有自己的测试帮助程序(肯定可以使用follow_redirect!),因此您可以设置一个登录请求,而无需在每个测试中实际执行登录请求/重定向循环 - https://github.com/hassox/warden/wiki/testing有更多详情。