Спецификации запроса RSpec / Capybara - Не удалось получить новую сессию пользователя POST - PullRequest
5 голосов
/ 05 февраля 2012

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

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

1 Ответ

27 голосов
/ 22 февраля 2012

Я получил это для работы, включив Warden :: Test :: Helpers (который разрабатывает использование за кулисами)

require 'spec_helper'
include Warden::Test::Helpers

describe "...Whatever..." do

  before(:each) do
    @user = Factory.create(:user)
    login_as @user, :scope => :user
  end
  ...

нашел решение отсюда: http://blog.joshmcarthur.com/2011/06/11/integration-tests-with-devise-and-rspec/

...