我的Rails 3应用程序上有一个非常基本的HTTP摘要身份验证设置。它主要遵循Rails Controller Guide中的示例:
我的ApplicationController有一个before_filter:
def digest_authenticate
success = authenticate_or_request_with_http_digest("Application") do |username|
APP_CONFIG["admin"]
end
end
这一切都很棒。页面应该受到保护。
我现在正试图在RSpec中对此进行测试并且悲惨地失败。
我按了this SO accepted answer并将authenticate_with_http_digest
方法放在支持文件中。这是我的实际测试:
describe DashboardController do
describe "GET 'index'" do
it "returns http success" do
authenticate_with_http_digest(foo, bar, baz)
visit root_path
response.should be_success
response.code.should == '200'
end
end
end
一些问题:
authenticate_with_http_digest
authenticate_with_http_digest
的论据是虚假的,似乎并不重要。这些不应该与我在APP_CONFIG["admin"]
中存储的内容相匹配吗?success
before_filter打印出digest_authenticate
的值,它总是打印出401,即使我将正确的参数传递给我的rspec助手。有关如何有效测试HTTP摘要式身份验证的任何想法?
谢谢!
答案 0 :(得分:2)
对于控制器测试,您应该使用get :index
来电而不是visit root_path
来电。这适用于您作为控制器测试的HTTP谓词和Rails操作的任何有效组合。
visit
方法是Capybara的一部分,只能在请求规范中使用。