Доступ к контроллеру в Cucumber для проверки входа

Во-первых, я знаю, что это вообще ужасная практика, потому что Cucumber предназначен только для тестирования выходных данных. Я просто хочу сделать это для одного очень-очень конкретного случая.

У меня есть приложение, которое обрабатывает аутентификацию пользователя с помощью файла cookie, установленного другим приложением, которое я поддерживаю. Я хотел бы написать очень простой интеграционный тест для аутентификации:

Given I have logged as "some_user" on the SSO server
When I visit any page
Then I should be logged in as "some_user"

Мое текущее определение шага для Then выглядит следующим образом:

Then /^I should be logged in as "([^"]*)"$/ do |username|
  user = User.find_by_username(username)
  assert_equal @controller.current_user, user
end

Очевидно, это не работает с «Неопределенным методом 'current_user' для nil: NilClass».

Если это не очевидно, ApplicationController#current_user возвращает либо пользователя, вошедшего в систему, либо nil.


person bhaibel    schedule 07.10.2010    source источник


Ответы (1)


Вы можете посетить страницу, на которой отображается имя пользователя, вошедшего в систему.
Например:
When I go to the account page
Then I should see "Welcome user" within "div#login"

person Art Shayderov    schedule 08.10.2010
comment
Я думал сделать это - заголовок приложения отображает разные вещи для вошедшего в систему пользователя - но мне это кажется хрупким и хакерским. Я бы предпочел проверить это где-нибудь еще/в дополнение к тестированию, напрямую, вошел ли пользователь в систему. - person bhaibel; 09.10.2010
comment
Почему вы думаете, что это хаки? Если бы вы протестировали свое приложение в браузере, я имею в виду моделирование реального пользователя, как бы вы проверили текущего пользователя, вошедшего в систему? Я думаю, для этого и нужен Cucumber, имитирующий реальные клики. - person Art Shayderov; 09.10.2010
comment
Косвенность этого беспокоит меня? Это может быть вещью личного стиля, которую мне нужно преодолеть. Причина, по которой он кажется хрупким, в отличие от хакерского, заключается в том, что тогда он становится более чувствительным (и, возможно, сверхчувствительным) к тому, как именно выглядит пользовательский заголовок в любое время - b/c, поскольку это пользователь переключается назад в основное приложение из приложения для управления SSO/пользовательской базой данных, на самом деле нет страницы приветствия, которую он видит. - person bhaibel; 13.10.2010