what rails docs ruby-on-rails openid rspec cucumber

ruby on rails - rails - ¿Cómo falsifico el inicio de sesión de OpenID en la historia del usuario de RSpec/Pepino cuando uso el complemento de abrir_id_authentication?



rails 5 rspec (4)

La respuesta de DEfusion funciona, excepto que necesitaba normalizar la identity_url como:

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

Gracias

Intento escribir un escenario de Pepino que me obligue a tener un usuario conectado, eso normalmente sería bastante simple, pero solo estoy usando autenticación de OpenID (por cuito del complemento de autenticación). Sin embargo, después de excavar las agallas de los complementos de open_id_authentication, no estoy seguro de cómo lograrlo dentro de Cucumber.


Si desea poder rescindir las respuestas, haga lo siguiente:

En 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

Al mover la respuesta a un método separado, ahora puede adjuntar la respuesta en sus pasos si es necesario. Por ejemplo, si quisiera una: falta respuesta y tuviera un controlador GoogleLoginController, podría hacer lo siguiente con Mocha:

GoogleLoginController.any_instance.stubs(:fake_openid_response) .returns([OpenIdAuthentication::Result.new(:missing), identity_url, nil])


Bort , una aplicación de esquemas de rieles, tiene un conjunto completo de pruebas rspec y admite el inicio de sesión de openID, por lo que es posible que desee echar un vistazo y ver qué hacen.


He encontrado una forma, si coloca esto en sus características / soporte / 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

Entonces puedes hacer algo como esto en tu paso apropiado:

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

Estoy acabando completamente con la autenticación de identificación abierta para las características de pepino, obviamente, si necesito instancias en las que haya un inicio de sesión fallido, podría hacerlo en función de la identidad identificada.