Comment puis-je spécifier le protocole https dans SPEC avec rspec?
-
26-10-2019 - |
Question
Dans mes itinéraires fichier je:
resources :subscription, :only => [:show], :constraints => {:protocol => "https"}
Je suis en train d'ajouter une spécification pour cette route comme ceci:
it "recognizes and generates #show" do
{ :get => "/subscription", :protocol => 'https' }.should route_to(:controller => "subscriptions", :action => "show")
end
Cependant, la spécification ne fonctionne toujours pas.
Si je supprime la :protocol => 'https'
, la spécification échoue également:
ActionController::RoutingError: No route matches "/subscription"
La solution
Autres conseils
Je ne suis pas sûr, mais je pense que les itinéraires doivent être déclarés au pluriel - voir Rails d'acheminement de l'extérieur . Il serait donc
resources :subscriptions
et dans la spécification
{:get => '/subscriptions', :protocol => 'https'}
Essayez si ça passe sans :protocol
. Dans le cas contraire, passez la spécification avec le protocole HTTPS. Cela ne devrait pas être testé sur un niveau de test d'unité, mais dans un test d'intégration.
Est-ce que passer si vous changez de spécification à ceci:
{:get => '/subscription'}.should_not route_to(:controller => …)
Ce serait au moins vous donner la confiance que HTTP ne transite pas.