Ruby 在Sinatra测试响应中访问典狱长登录信息

Ruby 在Sinatra测试响应中访问典狱长登录信息,ruby,sinatra,warden,Ruby,Sinatra,Warden,实际上,我要查找的所有内容都在标题中说明了——我需要在测试中访问warden用户变量,以检查身份验证是否有效。另一种方法对我来说也是可能的,只是试着很好地测试身份验证:) 在机架测试样式的完整堆栈测试中,您无法在内部请求环境中获取。如果您想验证您是否已作为特定用户登录,您需要查看重定向URL(如果它重定向到用户可识别的URL)或遵循重定向(轻松使用机架测试的遵循重定向!帮助器),然后在HTML中查找用户ID的证据 我原以为您不需要真正测试Warden本身,但您需要确保您向它提供了正确的信息,并且

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


在机架测试样式的完整堆栈测试中,您无法在内部请求环境中获取。如果您想验证您是否已作为特定用户登录,您需要查看重定向URL(如果它重定向到用户可识别的URL)或遵循重定向(轻松使用
机架测试
遵循重定向!
帮助器),然后在HTML中查找用户ID的证据

我原以为您不需要真正测试Warden本身,但您需要确保您向它提供了正确的信息,并且不会在中间件堆栈中损坏它

您可能会发现一些类似handy的东西,用于真正的表单填写和提交

最后,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