J'utilise Omniauth dans mon projet Rails et j'aimerais cacher "/ auth / Facebook" derrière une route "/ Login".
En fait, j'ai écrit un itinéraire: P>
match "/login", :to => redirect("/auth/facebook"), :as => :login
3 Réponses :
Vous devez utiliser rack :: Test et vérifier l'URL et le code d'état HTTP
get "/login" last_response.status.should == 302 last_response.headers["Location"].should == "/auth/facebook"
Parce que vous n'avez pas fourni de détail sur votre environnement, l'exemple suivant suppose que vous utilisez RSPEC 2.x et RSPEC-rails, avec des rails 3.
# rspec/requests/redirects_spec.rb describe "Redirects" do describe "GET login" do before(:each) do get "/login" end it "redirects to /auth/facebook" do response.code.should == "302" response.location.should == "/auth/facebook" end end end
Cela marche! Merci! La clé est de définir cette spécification dans # spécifications / demandes / redirections comme vous l'avez mentionnée. Auparavant, je l'avais fait dans l'application de l'applicationControlspec (qui a entraîné l'erreur que l'action "/ login" ne peut pas être trouvée dans l'applicationController) ou dans l'une des spécifications de spécification / routage avec "* .should route_to bla" (qui s'est plaint que la route n'existe pas).
Et oui, j'utilise RSPEC (-Rails) 2.x avec des rails 3.
Juste une autre note que le fichier doit être nommé Redirects_spec.rb, de sorte que la tâche de râteau par défaut le ramasse lorsque vous venez de «râler» sur la ligne de commande.
N'est-il pas une mauvaise pratique d'avoir plusieurs assertions?
Vous pouvez écrire une assertion par bloc si vous préférez. Mais dans ce cas, je crois que ça va bien.
Vous pouvez également utiliser:
Exemple RSPEC Itinéraires a>