rails rspec http базовый тест аутентификации - PullRequest
4 голосов
/ 16 сентября 2011

как мне проверить вход в приложение rails 3.1 с базовой аутентификацией http, используя rspec2 & capybara?

Я использую это;

 describe "GET 'index'" do
      it "should be successful" do
        request.env["HTTP_AUTHORIZATION"] = "Basic " + Base64::encode64("username:password")
        get 'index'
        response.should be_success
      end
    end

но это дает мне эту ошибку;

 NoMethodError:
            undefined method `env' for nil:NilClass

Ответы [ 2 ]

16 голосов
/ 17 сентября 2011

Capybara поставляется с Rack :: Test встроенным.

Таким образом, вы можете использовать Rack::Test::Session.basic_authorize метод для установки HTTP-заголовка Authorizationполе перед отправкой запроса.

basic_authorize 'username', 'password'
get 'index'
0 голосов
/ 16 сентября 2011
@request.env["HTTP_AUTHORIZATION"] = "Basic " + Base64::encode64("username:password")

Это должно быть:

request.env["HTTP_AUTHORIZATION"] = "Basic " + Base64::encode64("username:password")

, поскольку запрос не является переменной экземпляра.

...