2010-09-29 5 views
4

J'essaie d'écrire un test fonctionnel pour une action qui doit être exécutée sur https. Je ne teste pas la redirection HTTPS - je sais déjà que cela fonctionne à partir d'un autre test.Test fonctionnel «get» et le protocole https

Ce que je suis en train de faire est:

get :new, :protocol => "https://" 
assert_redirected_to :root 

Mais cela ne délivre pas la demande sur https. Y at-il une option "get" qui me permettra de changer le protocole?

De plus, si j'essaie de spécifier l'URL (par exemple: get "https: /test.host/do/something"), je reçois une erreur de routage, car il n'y a pas d'itinéraire au niveau de mes rails pour https d'au niveau de mon serveur Web.

Répondre

7

J'ai trouvé une réponse beaucoup plus simple ici: http://railspikes.com/2008/9/12/testing-ssl

Ce qui est de mettre la ligne suivante (a) au début de chaque test fonctionnel où SSL est nécessaire, ou (b) dans la méthode 'setup' si chaque action d'un contrôleur utilise SSL.

@request.env['HTTPS'] = 'on' 

Ce prepends toutes les demandes avec https

1

En test fonctionnel, il n'y a pas de routage depuis HTTP ou autre chose, il s'agit d'utiliser directement le contrôleur. Donc, vous ne pouvez pas tester cela à partir de HTTP ou HTTPS.

Mais vous pouvez railler les request.protocole de définir Dans comme 'https'

request.stub(:protocol).and_return("https://") 
get :new 
+0

Merci. J'ai fini par prendre une approche stub pour supprimer l'exigence SSL pour cette classe, mais seulement dans l'environnement 'test'. Je vois comment cette option pourrait fonctionner aussi bien. – jefflunt

Questions connexes