Rails + Cucumber / Capybara: Как установить / получить куки в тестах?

Я реализую функцию отложенного входа в систему. Моя особенность огурца должна описать это:

    Feature: User log in

        Scenario: Lazy login
            Given I didn't log out the last time I was on the site
            When I go to the homepage
            Then I should automatically be logged in 

И это мои определения шагов:

Given(/^I didn't log out the last time I was on the site$/) do
  user = FactoryGirl.create(:user)
  visit new_user_session_path
  fill_in('user[email]', with: user.email)
  fill_in('user[password]', with: 'test123')
  click_button('Sign in')

  Capybara.reset_sessions!
end

When(/^I go to the homepage$/) do
  visit root_path
end

Then(/^I should automatically be logged in$/) do #<-- Fails here
  page.should have_content("Logout")
end

Вот что происходит, когда пользователь входит в систему:cookies.signed[:auth_token] устанавливается Это будет использоваться фильтром before в моем ApplicationController, так что пользователи, которые открывают новый браузер, будут автоматически входить в систему:

class SessionsController < Devise::SessionsController

def create
  super
  if user_signed_in?
    puts 'yesssssss'
    session[:user_id] = current_user.id  
    current_user.remember_me! if current_user.remember_token.blank?
    cookies.signed[:auth_token] = {
      :value => current_user.remember_token,
      :domain => "mysite.com",
      :secure => !(Rails.env.test? || Rails.env.development?)
      }
    puts "current_user.remember_token = #{current_user.remember_token}"
    puts 'cookies:'
    puts cookies.signed[:auth_token]
  end
end

конец

Это фильтр до в моем ApplicationController:

def sign_in_through_cookie
  logger.info "logging in by cookie"
  puts "logging in by cookie"
  puts cookies.signed[:auth_token] #<-- PROBLEM: this returns nil.
  return true if !current_user.nil?
  if !cookies[:auth_token].nil? && cookies[:auth_token] != ''
    user = User.find_by_remember_token(cookies.signed[:auth_token])
    return false if user.blank?
    sign_in(user)
    puts 'success'
    return true
  else
    return false
  end
end

Так что проблема в том, что на последнем этапе моей функции огурца,cookies.signed[:auth_token] возвращает ноль Я предполагаю, что это просто капибара. Так нужно ли мне устанавливать cookie в тесте, а не использовать его в моем контроллере?

Ответы на вопрос(2)

Ваш ответ на вопрос