Pour la vie de moi, je ne comprends pas pourquoi Authlogic ne me connecte pas dans ce test d'intégration. Je n'ai eu aucun problème avec Authlogic me connecte dans des tests fonctionnels à l'aide de ce code. Selon l'authlogic RDOCS ( http://tinyurl.com/mb2fp2 ), simulant un état connecté est le Idem dans des tests fonctionnels et d'intégration, donc je suis assez confus. Toute aide est très appréciée!
class TipsController < ApplicationController before_filter :require_user, :only => [:destroy, :undelete] def destroy @tip = Tip.find(params[:id]) if can_delete?(@tip) @tip.destroy set_flash("good", "Tip deleted. <a href=\"#{undelete_tip_url(@tip.id)}\">Undo?</a>") respond_to do |format| format.html { redirect_to city_path(@tip.city)} end else set_flash("bad", "Seems like you can't delete this tip, sorry.") respond_to do |format| format.html { render :action => "show", :id => @tip} end end end end class DeleteTipAndRender < ActionController::IntegrationTest context "log user in" do setup do @user = create_user @tip = create_tip end context "delete tip" do setup do activate_authlogic UserSession.create(@user) @us = UserSession.find post "/tips/destroy", :id => @tip.id end should_redirect_to("city_path(@tip.city)"){city_path(@tip.city)} end end end
9 Réponses :
Jetez un coup d'œil au RDOC . p>
thx ... Je suis lié au RDOC dans mon message d'origine et je pense que je suis en train de suivre ce qui est là. C'est pourquoi je pose - parce que je ne reçois pas le résultat que j'attends :)
Hmmm. Mon erreur je n'ai pas vu ça. Vous pouvez le voter. Cela ne résoudra pas votre problème cependant.
Ok c'est assez drôle mais je suis confronté au même problème. :) L'avez-vous obtenu résolu?
Ha ... Malheureusement, Not Waseem. L'avez-vous compris?
En fait, mes exigences ont changé et je ne pouvais pas avoir la possibilité d'examiner cela.
basé sur le code dans le mais pas avec: p> user_sessions_controller code>
Créer code> méthode, qui prend un hachage des informations d'identification de connexion, j'ai pu faire fonctionner comme celui-ci dans mon test d'intégration:
Merci. De cette ligne dans la RDOC: Usersession.Create (Utilisateurs (: QUIMEVER)) J'ai supposé que je pourrais passer un @user obj. Appréciez l'aide!
J'utilise aussi authlogic avec DOIRA (mais avec usine_girl sur le dessus).
Mes tests fonctionnels ressemblent: P>
ENV["RAILS_ENV"] = "test" require File.expand_path(File.dirname(__FILE__) + "/../config/environment") require 'test_help' class ActiveSupport::TestCase [...] # Add more helper methods to be used by all tests here... include Authlogic::TestCase def setup activate_authlogic end end
Ouais, j'ai trouvé cette semaine qui avec RSPEC: dans les spécifications fonctionnelles, vous simulez la connexion de connexion W / usersession.create (@user) code>. Mais si vous essayez cela dans une spécification d'intégration, cela ne fonctionne pas. Afin de vous connecter à partir des spécifications d'intégration, j'ai trouvé que je devais conduire les formulaires (avec webrat) qui posera clairement un problème pour des choses comme Facebook et OpenID Connectez-vous. P>
J'utilise la solution de concombre et de James avec le correctif suivant travaillée pour moi: p>
Pour les personnes qui trouvent ce post dans Google et la plus grande justice - vous devez définir Persitence_Token Code> Attribut dans le modèle utilisateur. Par exemple. Vous pouvez appeler
@ user.reeset_persistence_token! code> et tout commence juste à fonctionner. :) p>
J'ai eu le même problème et je pouvais le résoudre en se connectant manuellement (comme d'autres personnes déjà répondues) p>
En outre, j'ai dû réparer mon Cookie Domain Strong>: P>
rails utilise Après avoir défini le bon domaine de cookie, tout a fonctionné à nouveau. P> www.example.com code> pour ses tests et puisque j'ai défini le domaine de cookie sur une valeur différente de mon
application.rb code> (via
config. cookie_domain code>) Le cookie de session créé une fois que le login n'était pas accessible à partir des demandes suivantes. P>
Je ne pouvais pas faire fonctionner avec la réponse acceptée, mais était proche. Je devais ajouter le signe d'exclamation à la fin de la fonction: Il travaille avec Ruby V3.2.18 et Authlogic v3.4.2. Merci de me faire remarquer dans la bonne direction cependant. P> p>
J'utilise les mêmes versions que vous le faites, et c'est ce que je reçois dans irb: (RDB: 1) usersession.create (utilisateur.find (25)) #
Veuillez tester à nouveau à l'aide du signe d'exclamation (!) Dans la fonction.
Cela fonctionne bien sur mes contrôleurs, je ne l'ai pas testé sur la console des rails.