2010-04-10 10 views
1

En essayant de tester mon succès crée un nouvel utilisateur après la connexion (en utilisant authlogic). J'ai ajouté quelques nouveaux champs à l'utilisateur, donc je veux juste m'assurer que l'utilisateur est enregistré correctement. Le problème est en dépit de la création d'une fabrique d'utilisateurs valide, chaque fois que j'essaye d'attraper ses attributs pour écrire à la méthode de création, le mot de passe et la confirmation de mot de passe sont omis. Je présume que c'est une méthode de sécurité qu'authlogic effectue en arrière-plan. Cela entraîne l'échec des validations et l'échec du test.Authlogic et mot de passe et mot de passe de confirmation des attributs - inaccessible?

Je me demande comment contourner ce problème? Je pourrais juste taper les attributs à la main mais cela ne semble pas très sec.

context "on POST to :create" do 
      context "on posting a valid user" do 
       setup do 
        @user = Factory.build(:user) 
        post :create, :user => @user.attributes 
       end 
       should "be valid" do 
        assert @user.valid? 
       end 
       should_redirect_to("users sentences index page") { sentences_path() } 
       should "add user to the db" do 
        assert User.find_by_username(@user.username) 
       end 
      end 


##User factory 
Factory.define :user do |f| 
    f.username {Factory.next(:username) } 
    f.email { Factory.next(:email)} 
    f.password_confirmation "password" 
    f.password "password" 
    f.native_language {|nl| nl.association(:language)} 
    f.second_language {|nl| nl.association(:language)} 
end 

Répondre

2

Vous pouvez certainement pas lire le mot de passe et password_confirmation de l'objet utilisateur. Vous devrez fusionner dans le :password et le :password_confirmation au hachage . Si vous stockez ce hash quelque part avec le reste de vos définitions d'usine, il n'est pas très sec, mais il vaut mieux que le coder en dur dans votre test.

+0

merci de confirmer cela pour moi. mal juste les fusionner avec les attributs hash. Merci. – robodisco