Estaba pasando un buen rato averiguando cómo iniciar sesión y cerrar sesión utilizando los objetos de respuesta de Rails. Los blogs estándar estaban bien, pero finalmente lo diagnostiqué, y quería grabarlo aquí.¿Cómo pruebo los raíles que inician sesión desde la consola?
app.get '/'
assert_response :success
app.get '/auth_only_url'
assert_response 302
user = User.find(:user_to_login)
app.post '/signin_url',
:user_email => user.email,
:user_password => '<password in clear>'
assert_response 302
app.follow_redirect!
assert_response :success
app.get '/auth_only_url'
assert_response :success
Nota, lo anterior implica que redirigir después de una solicitud de autenticación fallida, y también que redirigir después de iniciar sesión.
Para garantizar que se cargan los accesorios en el entorno de prueba DB (que se produce normalmente durante la prueba de inclinación), asegúrese de que se ejecuta el siguiente:
rake db:fixtures:load RAILS_ENV=test
(de Patrick Richie) la URL por defecto aparecerá como 'www.example.com', ya que este host predeterminado como se establece en ActionController :: Integración :: Sesión
ActionController::Integration::Session.new.host=> "www.example.com"
Está situado en actionpack/lib/action_controller/integration.rb # 75
para cambiarlo en la prueba de integración, haga lo siguiente:
session = open_session do |s| s.host = 'my-example-host.com' end