2010-10-31 4 views
2

J'écrivais un test rspec pour l'action destroy de mon contrôleur de sessions (Authlogic 2.1.6). Je ne peux pas deviner quelle méthode je devrais appeler, soit sur l'objet utilisateur, soit sur l'objet de session pour déterminer si la session est toujours "active" (c'est-à-dire, que l'utilisateur est ou non connecté).Comment tester la déconnexion/déconnexion (action de destruction de UserSessionsController) lors de l'utilisation d'Authlogic?

Mon premier instinct était d'utiliser @ user.logged_in? mais j'ai appris que cela ne fonctionnera pas parce que logged_in fait sa détermination en fonction du délai d'expiration de la session, plutôt que de l'état de l'objet session.

Voici le code que j'ai écrit qui ne fonctionne pas, car be_logged_in renvoie true 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é du temps à jouer dans le débogueur en regardant les méthodes attachées à la session et à l'utilisateur et aucun d'entre eux ne m'a sauté aux yeux comme étant utile pour ce que je veux ici.

Répondre

2

Comment sur UserSession.find.should be_nil

+0

Merci, zététique. Cela a fait l'affaire. – Iain

Questions connexes