访问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

在机架测试风格的全栈测试中,您无法进入内部请求环境。如果你想验证你已经以特定用户的身份登录,你需要查看重定向URL(如果它重定向到用户可识别的URL)或遵循重定向(使用rack-testfollow_redirect!助手很容易),然后在HTML中查找用户ID的证据。

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

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

最后,Warden有自己的测试助手(肯定可以与rack-test一起使用),因此您可以设置登录请求,而无需在每个测试中实际运行登录请求/重定向周期https://github.com/hassox/warden/wiki/testing有更多详细信息。

最新更新