使用 rspec 测试omniauth回调时设置env

发布于 2024-12-02 19:06:16 字数 1094 浏览 0 评论 0原文

我在尝试通过 Omniauth 设置 Facebook 身份验证回调时遇到了一个奇怪的问题。在我的控制器中(简化为显示错误所需的代码):

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
  def facebook
    raise env.inspect
    # auth_hash = env["omniauth.auth"]
  end
end

这在生产模式下工作,向我显示哈希值。但是在测试模式下 env 设置为 nil。

我在我的spec_helper.rb 文件中设置了以下内容

OmniAuth.config.test_mode = true
OmniAuth.config.add_mock(:facebook, {"credentials" => {
                                        "token" => "foo-token"
                                        }
                                     })

,我的规范如下所示:

require 'spec_helper'

describe Users::OmniauthCallbacksController do

  describe "Facebook" do

    before(:each) do
      request.env["devise.mapping"] = Devise.mappings[:user] 
      request.env["omniauth.auth"] = OmniAuth.config.mock_auth[:facebook]
    end

    it "should be a redirect" do
      get :facebook
      response.should redirect_to(root_path)
    end

  end

end

任何人都可以告诉我在运行测试时我需要做什么才能让 env 不为 nil 吗?

I'm having a strange problem when trying to set a callback for Facebook Authentication via Omniauth. In my controller (simplified to just the code necessary to show the error) I have:

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
  def facebook
    raise env.inspect
    # auth_hash = env["omniauth.auth"]
  end
end

this works in production mode, showing me the hash. However in test mode env is set to nil.

I have the following set in my spec_helper.rb file

OmniAuth.config.test_mode = true
OmniAuth.config.add_mock(:facebook, {"credentials" => {
                                        "token" => "foo-token"
                                        }
                                     })

and my spec looks like this:

require 'spec_helper'

describe Users::OmniauthCallbacksController do

  describe "Facebook" do

    before(:each) do
      request.env["devise.mapping"] = Devise.mappings[:user] 
      request.env["omniauth.auth"] = OmniAuth.config.mock_auth[:facebook]
    end

    it "should be a redirect" do
      get :facebook
      response.should redirect_to(root_path)
    end

  end

end

Can anyone enlighten me on what I need to do to have env not be nil when running my tests?

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

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

发布评论

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

评论(1

我喜欢麦丽素 2024-12-09 19:06:16

我在 spec_helper.rb 中使用以下内容:

RACK_ENV = ENV['ENVIRONMENT'] ||= 'test'

我不使用 Rails 或 Devise,所以 YMMV。我还看到各种帖子说有人必须在他们的要求之前执行此操作才能使其正常工作。

I use the following in my spec_helper.rb :

RACK_ENV = ENV['ENVIRONMENT'] ||= 'test'

I don't use Rails or Devise though so YMMV. I've also seen various threads saying that someone had to do this before their requires to get it to work.

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