Rails rspec http 基本身份验证测试

发布于 2024-12-05 03:31:04 字数 443 浏览 1 评论 0 原文

如何使用 rspec2 和 http basic auth 测试登录到 Rails 3.1 应用程序水豚?

我正在用这个;

 describe "GET 'index'" do
      it "should be successful" do
        request.env["HTTP_AUTHORIZATION"] = "Basic " + Base64::encode64("username:password")
        get 'index'
        response.should be_success
      end
    end

但它给了我这个错误;

 NoMethodError:
            undefined method `env' for nil:NilClass

how do I test logging into a rails 3.1 app with http basic auth using rspec2 & capybara?

I'm using this;

 describe "GET 'index'" do
      it "should be successful" do
        request.env["HTTP_AUTHORIZATION"] = "Basic " + Base64::encode64("username:password")
        get 'index'
        response.should be_success
      end
    end

but it gives me this error;

 NoMethodError:
            undefined method `env' for nil:NilClass

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

花海 2024-12-12 03:31:04

Capybara 内置了 Rack::Test

因此,您可以使用 Rack::Test::Session.basic_authorize 方法 设置 发出请求之前的授权 HTTP 标头字段

basic_authorize 'username', 'password'
get 'index'

Capybara comes with Rack::Test built in.

So, you can use the Rack::Test::Session.basic_authorize method to set the Authorization HTTP header field before making a request.

basic_authorize 'username', 'password'
get 'index'
倾听心声的旋律 2024-12-12 03:31:04
@request.env["HTTP_AUTHORIZATION"] = "Basic " + Base64::encode64("username:password")

这应该是:

request.env["HTTP_AUTHORIZATION"] = "Basic " + Base64::encode64("username:password")

因为 request 不是实例变量。

@request.env["HTTP_AUTHORIZATION"] = "Basic " + Base64::encode64("username:password")

This should be:

request.env["HTTP_AUTHORIZATION"] = "Basic " + Base64::encode64("username:password")

as request is not an instance variable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文