2 votes

Comment puis-je tester la déconnexion/la signature (action de destruction de UserSessionsController) lorsque j'utilise Authlogic ?

J'ai écrit un test rspec pour l'action destroy de mon contrôleur de sessions (Authlogic 2.1.6). Je n'arrive pas à comprendre quelle méthode je dois appeler, soit sur l'objet utilisateur, soit sur l'objet session pour déterminer si la session est toujours "vivante" (c'est-à-dire que l'utilisateur est ou non connecté).

Mon premier réflexe a été d'utiliser @user.logged_in ? mais j'ai appris que cela ne fonctionnerait pas car logged_in est déterminé en fonction du délai d'attente de la session, plutôt que de l'état de l'objet de session.

Voici le code que j'ai écrit et qui ne fonctionne pas, car be_logged_in renvoie vrai dans les deux cas.

    describe "for logged in user" do
      it "should logout the user" do
        activate_authlogic
        @user = Factory.create(:valid_user)
        @session = UserSession.create(@user)
        @user.should be_logged_in
        delete :destroy
        @user.should_not be_logged_in
        response.should redirect_to(root_path)
      end
    end
  end

Que dois-je utiliser à la place de "be_logged_in" ? J'ai passé un certain temps à jouer dans le débogueur à regarder les méthodes attachées à la session et à l'utilisateur et aucune d'entre elles ne m'a sauté aux yeux comme étant utile pour ce que je veux ici.

2voto

zetetic Points 29261

Qu'en est-il UserSession.find.should be_nil

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X