Тестирование http базовой аутентификации с помощью Cucumber и Capybara - PullRequest
0 голосов
/ 21 ноября 2011

Я пытаюсь проверить метод authenticate_or_request_with_http_basic, используя Cucumber и Capybara, но он не работает.

Есть предложения?

Контроллер авторизации:

before_filter :authorize

def show
 flash[:notice] = 'Welcome back!'
end  

private

def authorize
 authenticate_or_request_with_http_basic do |username, password|
  username == "admin" && password == "password"
 end
end

Характеристика огурца:

Scenario: Successful login
  When I log in as "admin" with "password"
  Then I should see "Welcome back!"

Шаг огурца:

When /^I log in as "([^\"]*)" with "([^\"]*)"$/ do |username, password|
  visit authorization_path
  authorize username, password
end

Сообщение об ошибке:

expected there to be content "Welcome back!" in "HTTP Basic: Access denied.\n" (RSpec::Expectations::ExpectationNotMetError)

Я также пытался использовать следующую команду, но она тоже не работает:

page.driver.browser.basic_authorize(username, password)

Ответы [ 3 ]

2 голосов
/ 29 января 2013

Используйте веб-драйвер селена и посетите веб-сайт с page.driver.visit ("https://username:password@example.com")

0 голосов
/ 22 ноября 2011

Итак, в какой момент информация не может пройти. Попробуйте добавить операторы log / поместить в соответствующие места, чтобы проверить это.

When /^I log in as "([^\"]*)" with "([^\"]*)"$/ do |username, password|
  puts "got into the test-helper with: #{username.inspect} and #{password.inspect}"
  visit authorization_path
  authorize username, password
end


def authorize
  puts "in the authorize method before actually trying to authorize"
  authenticate_or_request_with_http_basic do |username, password|
    puts "inside authorize, trying to authenticate against: #{username.inspect} and #{password.inspect}"
    username == "admin" && password == "password"
  end
end

Если вы видите один из них в журнале / выводе, то по крайней мере вы будете знать имя пользователя / пароль достигает этой точки в коде

0 голосов
/ 21 ноября 2011

Я думаю, что вы показываете приветственное сообщение на другой странице.В этом случае пропущен шаг.

Scenario: Successful login
  When I log in as "admin" with "password"
  Then I should be on some page
  Then I should see "Welcome back!"
...