Установка env при использовании rspec для проверки обратных вызовов omniauth - PullRequest
3 голосов
/ 03 сентября 2011

У меня странная проблема при попытке установить обратный вызов для аутентификации Facebook через Omniauth.В моем контроллере (просто для кода, необходимого для отображения ошибки) у меня есть:

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 не был равен нулю при выполнении моих тестов?

1 Ответ

1 голос
/ 18 сентября 2011

Я использую следующее в моем spec_helper.rb :

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

Я не использую Rails или Devise, хотя, так что YMMV.Я также видел различные темы, в которых говорилось, что кто-то должен был сделать это до , и они требуют, чтобы это заработало.

...