Войти используя заголовки в огурце - PullRequest
2 голосов
/ 14 июля 2010

Я новичок в огурцах и капибарах, так что, может быть, это легко.

Я использую заголовки, чтобы проверить, вошел ли пользователь в систему или нет, и у меня возникла проблема при тестировании огурца.

Я использую Capybara и Cucumber и "добавлю заголовки": http://aflatter.de/2010/06/testing-headers-and-ssl-with-cucumber-and-capybara/

Проблема, с которой я столкнулся, заключается в том, что он устанавливает заголовок только один раз в каждом сюжете.Поэтому, если у меня есть история, которая проходит более одного шага, заголовок исчезает, и пользователь больше не входит в систему.

Пример истории:

Given I am logged in as a superuser
And I have a database "23456789" that is not active
And I am on the home page
When I follow the "Delete" link for "23456789.sqlite"
Then I should see "Deleted the database"

В этой истории "Когда я перехожу по ссылке «Удалить» для строки «23456789.sqlite», она не будет работать, поскольку пользователь больше не вошел в систему!

Задумывались об использовании сеанса или до / после в огурце.

Кто-нибудь знает, как это исправить?

1 Ответ

0 голосов
/ 14 июля 2010

Этого можно добиться, передавая имя пользователя в переменной окружения:

When /^I am logged in as a superuser$/ do
  ENV['RAILS_TEST_CURRENT_USER'] = 'admin'
end

application_controller.rb:

before_filter :stub_current_user

def stub_current_user
  if Rails.env == 'cucumber' || Rails.env == 'test'
    if username = ENV['RAILS_TEST_CURRENT_USER']
      @current_user = User.find_by_username(username)
    end
  end
end
...