RSpec/Capybara Request Specs - Can't get Devise to POST new user session

Я пытаюсь начать новую сессию пользователя, создав помощника, который POSTs новую сессию пользователя. Вот что у меня есть

def login(user)
  post user_session_path, :login => user.username, :password => user.password
end

И для пользователя

user = Factory.create(:user)

У меня есть тест в RSpec, который направляет пользователя на страницу, требующую аутентификации. Используя помощник, я ожидаю, что будет создана новая сессия пользователя. Однако при запуске теста он сообщает мне, что текущая страница - это экран входа в систему. Это говорит о том, что новая сессия пользователя не создается, а пользователь перенаправляется на экран входа в систему при доступе к ограниченному ресурсу без сессии пользователя. Если посмотреть на тестовые журналы, то это так и есть.

Также в журналах говорится, что действие POST является неавторизованным.

Started POST "/login" for 127.0.0.1 at 2012-02-04 13:34:59 -0800
Processing by SessionsController#create as HTML
Parameters: {"login"=>"foo12", "password"=>"[FILTERED]"}
Completed 401 Unauthorized in 1ms
Processing by SessionsController#new as HTML
Parameters: {"login"=>"foo12", "password"=>"[FILTERED]"}
Rendered devise/shared/_links.erb (1.4ms)
Completed 200 OK in 15ms (Views: 12.7ms | ActiveRecord: 0.0ms)

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

5
задан Viet 4 February 2012 в 21:49
поделиться