10
votes

Tests d'intégration avec Authlogic?

Pour la vie de moi, je ne comprends pas pourquoi Authlogic ne me connecte pas dans ce test d'intégration. Je n'ai eu aucun problème avec Authlogic me connecte dans des tests fonctionnels à l'aide de ce code. Selon l'authlogic RDOCS ( http://tinyurl.com/mb2fp2 ), simulant un état connecté est le Idem dans des tests fonctionnels et d'intégration, donc je suis assez confus. Toute aide est très appréciée!

class TipsController < ApplicationController
  before_filter :require_user,  :only => [:destroy, :undelete]
  def destroy
    @tip = Tip.find(params[:id])

    if can_delete?(@tip)

      @tip.destroy

      set_flash("good", "Tip deleted. <a href=\"#{undelete_tip_url(@tip.id)}\">Undo?</a>")
      respond_to do |format|
        format.html { redirect_to city_path(@tip.city)} 
      end
    else
      set_flash("bad", "Seems like you can't delete this tip, sorry.")
      respond_to do |format|
        format.html { render :action => "show", :id => @tip} 
      end
    end
  end
end


class DeleteTipAndRender < ActionController::IntegrationTest
  context "log user in" do
    setup do
      @user = create_user
      @tip = create_tip
    end

    context "delete tip" do
      setup do
        activate_authlogic
        UserSession.create(@user)
        @us = UserSession.find
        post "/tips/destroy", :id => @tip.id
      end

      should_redirect_to("city_path(@tip.city)"){city_path(@tip.city)} 
    end
  end
end


0 commentaires

9 Réponses :


-3
votes

Jetez un coup d'œil au RDOC .


5 commentaires

thx ... Je suis lié au RDOC dans mon message d'origine et je pense que je suis en train de suivre ce qui est là. C'est pourquoi je pose - parce que je ne reçois pas le résultat que j'attends :)


Hmmm. Mon erreur je n'ai pas vu ça. Vous pouvez le voter. Cela ne résoudra pas votre problème cependant.


Ok c'est assez drôle mais je suis confronté au même problème. :) L'avez-vous obtenu résolu?


Ha ... Malheureusement, Not Waseem. L'avez-vous compris?


En fait, mes exigences ont changé et je ne pouvais pas avoir la possibilité d'examiner cela.



3
votes

basé sur le code dans le user_sessions_controller Créer méthode, qui prend un hachage des informations d'identification de connexion, j'ai pu faire fonctionner comme celui-ci dans mon test d'intégration: xxx

mais pas avec: xxx


2 commentaires

Merci. De cette ligne dans la RDOC: Usersession.Create (Utilisateurs (: QUIMEVER)) J'ai supposé que je pourrais passer un @user obj. Appréciez l'aide!


Hmm selon ceci:

J'ai trouvé que pour les tests d'intégration, j'ai besoin de vous connecter via un message suivant:

setup do
  post 'user_session', :user_session => {:email => 'someone@example.com', :password => 'password'}
end


0 commentaires

4
votes

J'utilise aussi authlogic avec DOIRA (mais avec usine_girl sur le dessus).

Mes tests fonctionnels ressemblent: P>

ENV["RAILS_ENV"] = "test"
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
require 'test_help'

class ActiveSupport::TestCase
  [...]
  # Add more helper methods to be used by all tests here...
  include Authlogic::TestCase

  def setup
    activate_authlogic
  end
end


0 commentaires

2
votes

Ouais, j'ai trouvé cette semaine qui avec RSPEC: dans les spécifications fonctionnelles, vous simulez la connexion de connexion W / usersession.create (@user) . Mais si vous essayez cela dans une spécification d'intégration, cela ne fonctionne pas. Afin de vous connecter à partir des spécifications d'intégration, j'ai trouvé que je devais conduire les formulaires (avec webrat) qui posera clairement un problème pour des choses comme Facebook et OpenID Connectez-vous.


0 commentaires


1
votes

Pour les personnes qui trouvent ce post dans Google et la plus grande justice - vous devez définir Persitence_Token Attribut dans le modèle utilisateur. Par exemple. Vous pouvez appeler @ user.reeset_persistence_token! et tout commence juste à fonctionner. :)


0 commentaires

0
votes

J'ai eu le même problème et je pouvais le résoudre en se connectant manuellement (comme d'autres personnes déjà répondues)

En outre, j'ai dû réparer mon Cookie Domain :

rails utilise www.example.com pour ses tests et puisque j'ai défini le domaine de cookie sur une valeur différente de mon application.rb (via config. cookie_domain ) Le cookie de session créé une fois que le login n'était pas accessible à partir des demandes suivantes.

Après avoir défini le bon domaine de cookie, tout a fonctionné à nouveau.


0 commentaires

2
votes

Je ne pouvais pas faire fonctionner avec la réponse acceptée, mais était proche. Je devais ajouter le signe d'exclamation à la fin de la fonction: xxx

Il travaille avec Ruby V3.2.18 et Authlogic v3.4.2. Merci de me faire remarquer dans la bonne direction cependant.


3 commentaires

J'utilise les mêmes versions que vous le faites, et c'est ce que je reçois dans irb: (RDB: 1) usersession.create (utilisateur.find (25)) # "<"} > (RDB: 1) usersession.create (utilisateur.find (25)). Sauver true clairement quelque chose d'autre doit être interféré avec le modèle utilisateur / session


Veuillez tester à nouveau à l'aide du signe d'exclamation (!) Dans la fonction.


Cela fonctionne bien sur mes contrôleurs, je ne l'ai pas testé sur la console des rails.