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.