2010-11-22 3 views
0

J'utilise Devise 1.0.8 sur un projet Rails 2.3.8. Dans mon test du contrôleur je:current_user renvoie TrueClass au lieu d'un utilisateur dans un contrôleur utilisant Devise

context "when current_user is admin" do 
    should "render" do 
    sign_in Factory(:admin) 
    get :index 
    assert_response :success 
    end 
end 

Et dans le contrôleur lui-même, il y a la before_filter suivante:

def redirect_if_not_admin 
    puts current_user 
    redirect_to root_path unless current_user.try(:admin?) 
end 

Ceci est le résultat de mon test:

true 
false 

NoMethodError: undefined method `admin?' for true:TrueClass 

Alors current_user est true lorsque j'utilise sign_in dans le test. Cependant, quand je ne le fais pas, current_user est nul, donc c'est définitivement affecté. Merci d'avance pour votre aide.

Répondre

2

J'ai utilisé la confirmation! méthode sur la ressource dans un after_create/build au lieu de définir les attributs dans l'usine et qui a fait l'affaire. current_user est égal à vrai lorsqu'il y a un utilisateur non confirmé sur le site (quelqu'un qui s'est inscrit mais qui n'a pas encore cliqué sur le lien de confirmation qui lui a été envoyé).

Questions connexes