Как я фальсифицирую вход в систему OpenID в пользовательской истории/Огурце RSpec при использовании open_id_authentication плагина

Это потому, что модуль python re довольно слаб и не поддерживает подпрограммы и рекурсию Вместо этого попробуйте модуль pypi regex. Это скомпилирует ваше регулярное выражение.

6
задан DEfusion 19 December 2008 в 23:13
поделиться

4 ответа

Я выяснил путь, если Вы помещаете это в свой features/support/env.rb:

ActionController::Base.class_eval do
  private

  def begin_open_id_authentication(identity_url, options = {})
    yield OpenIdAuthentication::Result.new(:successful), identity_url, nil
  end 
end

Затем можно просто сделать что-то вроде этого на соответствующем шаге:

Given /^I am logged in as "(.*)"$/ do |name|
  user = User.find_by_name(user)
  post '/session', :openid_url => user.identity_url
  # Some assertions just to make sure our hack in env.rb is still working
  response.should redirect_to('/')
  flash[:notice].should eql('Logged in successfully')
end

Я просто полностью ударяю открытого идентификационного автора для огуречных функций, очевидно, если мне нужны экземпляры, где там является отказавшим, входят в систему, я мог сделать это на основе предоставленного identity_url.

4
ответ дан 16 December 2019 в 21:47
поделиться

Борт, скелетное приложение направляющих, имеет полный набор тестов rspec и поддерживает открытый вход в систему, таким образом, можно хотеть смотреть и видеть то, что они делают.

2
ответ дан 16 December 2019 в 21:47
поделиться

Ответ DEFUSION работает за исключением того, что я должен был нормализовать identity_url как:

ActionController::Base.class_eval do

    private

        def begin_open_id_authentication(identity_url, options = {})
            yield OpenIdAuthentication::Result.new(:successful), self.normalize_identifier(identity_url), nil
        end 
end

Спасибо

0
ответ дан 16 December 2019 в 21:47
поделиться

Если вы хотите иметь возможность заглушать ответы, сделайте следующее:

В features/support/helpers.rb:

ActionController::Base.class_eval do

  private
    def fake_openid_response(identity_url)
      [OpenIdAuthentication::Result.new(:successful), identity_url, nil]
    end

    def begin_open_id_authentication(identity_url, options = {})
        yield fake_openid_response(identity_url)
    end 
end

Вынеся ответ в отдельный метод, вы теперь можете заглушить его в своих шагах, если это необходимо. Например, если мне нужен ответ :missing и у меня есть контроллер GoogleLoginController, я могу сделать следующее, используя Mocha:

GoogleLoginController.any_instance.stubs(:fake_openid_response)
    .returns([OpenIdAuthentication::Result.new(:missing), identity_url, nil])
2
ответ дан 16 December 2019 в 21:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: