Question

J'avais énormément de mal à comprendre comment me connecter et me déconnecter à l'aide des objets de réponse de Rails.Les blogs standards étaient ok, mais j'ai finalement diagnostiqué le problème et je voulais l'enregistrer ici.

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

Notez que ce qui précède implique que vous redirigez après l'échec d'une demande d'authentification, et également que vous redirigez après vous être connecté.

Pour vous assurer que vous chargez les appareils dans la base de données de votre environnement de test (ce qui se produit normalement pendant le test de rake), assurez-vous d'exécuter ce qui suit :

 rake db:fixtures:load RAILS_ENV=test

(De Patrick Richie) L'URL par défaut semblera être «www.example.com», car cet hôte par défaut est défini dans ActionController :: Integration :: Session

ActionController::Integration::Session.new.host=> "www.example.com"

Il est défini dans actionpack/lib/action_controller/integration.rb#75

Pour le modifier dans le test d'intégration, procédez comme suit :

session = open_session do |s|  s.host = 'my-example-host.com' end
Était-ce utile?

La solution

'www.example.com' est l'hôte par défaut tel que défini dans ActionController::Integration::Session

>> ActionController::Integration::Session.new.host
=> "www.example.com"

Il est défini dans actionpack/lib/action_controller/integration.rb#75

Vous devriez pouvoir le modifier dans votre test d'intégration en procédant comme suit :

session = open_session do |s|
  s.host = 'my-example-host.com'
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top