I'm writing feature specs with rspec and want to skip the login step each time.  Users are authenticated through omniauth (no devise) and a session[:user] variable is set and then referenced to stay logged in.  I want to be able to set the session variable directly if possible:
require 'spec_helper'
describe "My page" do
  it "has what I want on it when logged in" do
    user = FactoryGirl.create(:user)
    session[:user] = user.id
    visit my_path
    page.should have_content "Foobar"
  end
end
but this gives
 Failure/Error: session[:user] = user.id
 NameError:
   undefined local variable or method `session' for #<RSpec::Core::ExampleGroup::Nested_1:0x007fd13456d170>
Is there any way to set the session variable directly so that I can avoid the login step in most of the tests?
The rack_session_access gem seems to work well: https://github.com/railsware/rack_session_access
With it, the test becomes:
require 'spec_helper'
describe "My page" do
  it "has what I want on it when logged in" do
    user = FactoryGirl.create(:user)
    page.set_rack_session(user: user.id)
    visit my_path
    page.should have_content "Foobar"
  end
end
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With