Функциональный тест «get» запросов и протокол https - PullRequest
4 голосов
/ 29 сентября 2010

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

Я пытаюсь сделать следующее:

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

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

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

Ответы [ 2 ]

8 голосов
/ 04 октября 2010

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

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

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

Это добавляет все запросы к https

1 голос
/ 29 сентября 2010

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

Но вы можете посмеяться над request.protocole, определив его как 'https'

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