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