2008-09-04 17 views
6

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 

Respuesta

2

'www.example. com' es el 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/i ntegration.rb # 75

Usted debe ser capaz de cambiarlo en su prueba de integración de la siguiente manera:

session = open_session do |s| 
    s.host = 'my-example-host.com' 
end 
Cuestiones relacionadas