2010-09-29 6 views
4

Я пытаюсь написать функциональный тест для действия, которое должно выполняться через https. Я не тестирую перенаправление HTTPS - я уже знаю, что работает из другого теста.Функциональные тесты «получить» и протокол https

То, что я пытаюсь сделать, это:

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

Но это не выдает запрос по протоколу HTTPS. Есть ли опция «получить», которая позволит мне изменить протокол?

Кроме того, если я попытаюсь указать URL-адрес (например: получить «https: /test.host/do/something»), я получаю ошибку маршрутизации, так как на моем уровне рельсов нет маршрута для https - это позаботится на уровне моего веб-сервера.

ответ

7

я нашел гораздо более простой ответ здесь: http://railspikes.com/2008/9/12/testing-ssl

Что поставить следующую строку либо (а) в начале каждого функционального теста, где требуется SSL, или (b) в методе «setup», если каждое действие в контроллере использует SSL.

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

Это присоединяет все запросы с HTTPS

1

В функциональном тестировании нет маршрутизации из HTTP или чего-либо еще, он напрямую использует контроллер. Таким образом, вы не можете протестировать это из HTTP или HTTPS.

Но вы можете издеваются над request.protocole данс определить его как «HTTPS»

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

Благодарности. Я запустил подход заглушки, чтобы удалить требование SSL для этого класса, но только в среде «test». Я вижу, как этот вариант может работать. – jefflunt

Смежные вопросы