Come posso testare l'accesso a Rails dalla console?
-
09-06-2019 - |
Domanda
Mi stavo divertendo moltissimo a capire come accedere e disconnettermi utilizzando gli oggetti di risposta di Rails.I blog standard andavano bene, ma alla fine l'ho diagnosticato e volevo registrarlo qui.
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
Tieni presente che quanto sopra implica il reindirizzamento dopo una richiesta di autenticazione non riuscita e anche il reindirizzamento dopo l'accesso.
Per assicurarti di caricare le apparecchiature nel DB del tuo ambiente di test (che normalmente avviene durante il rake test), assicurati di eseguire quanto segue:
rake db:fixtures:load RAILS_ENV=test
(Da Patrick Richie) L'URL predefinito sembrerà essere "www.example.com", come questo host predefinito come set in ActionController :: Integration :: Session
ActionController::Integration::Session.new.host=> "www.example.com"
È impostato in actionpack/lib/action_controller/integration.rb#75
Per modificarlo nel test di integrazione, procedere come segue:
session = open_session do |s| s.host = 'my-example-host.com' end
Soluzione
"www.example.com" è l'host predefinito impostato in ActionController::Integration::Session
>> ActionController::Integration::Session.new.host
=> "www.example.com"
È impostato in actionpack/lib/action_controller/integration.rb#75
Dovresti essere in grado di modificarlo nel test di integrazione procedendo come segue:
session = open_session do |s|
s.host = 'my-example-host.com'
end