Pregunta

Actualmente estoy luchando por desactivar un método auxiliar de mi aplicación Sinatra desde Pepino .

Tengo una aplicación Sinatra con autenticación de sesión simple (mediante cookies) y quiero desactivar la autenticación al quitar el log_in? para mi Pepino escenarios. Parece que hay un problema con Sinatra y Cucumber en relación con las sesiones, así que pensé en usar Mocha para solucionar el problema.

Sin embargo, no sé cómo puedo acceder a la instancia de Sinatra :: Application desde un Given -Block para desactivar el método.

¿Fue útil?

Solución

Puede obtener el contexto correcto utilizando Sinatra::Application.class_eval

Editar: vea la respuesta del póster original para una explicación completa.

Otros consejos

Parece que necesito anular directamente mi mecanismo de autenticación dentro de un Antes de hacer ... finalizar -block

Así que terminé con un hooks.rb colocado en el archivo features / support / sobrescribiendo mi login_in? y el current_user método.

Before do
  MySinatraApplicationClass.class_eval do
    helpers do
      def logged_in?
        return true
      end
      def current_user
        # This returns a certain Username usually stored 
        # in the session, returning it like
        # that prohibits different user logins, but for
        # now this is enough for me
        "Walter"
      end
    end
  end
end

Lo único de lo que tuve que ocuparme es que las otras acciones dentro de la aplicación no se leen directamente de session sino que usan esos ayudantes.

Lamentablemente, creo que esta forma de manejar aplicaciones de Sinatra basadas en sesiones a través de Cucumber ya se describe en otro lugar y pensé que mi problema era diferente .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top