Я пытаюсь начать новую сессию пользователя, создав помощника, который 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, который посещает страницу входа, заполняет учетные данные пользователя и отправляет их. Это создает новую сессию пользователя без проблем.