In my application, I have a session controller. Now I want to test a user controller, available only if it is registered.
My problem is how can I fake a session. I've tried a lot already, so I hope you can help me now:
Application controller:
helper_method :current_user
def authenticate_user
current_user
if @current_user
return true
else
redirect_to(:controller => 'sessions', :action => 'new')
return false
end
end
private
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
The user controller has:
before_filter :authenticate_user
Controller Test:
describe "GET index" do
it "assigns all users as @users" do
user = FactoryGirl.create(:user)
@request.session[:user_id] = user.id
get 'users'
expect(@users.size).to eq(1)
end
end
I also tried session[:user_id] = user.idand debugged (after request for receipt):
- save_and_open_page Let me see the login page.
@current_user always nilUser.find(session[:user_id]) correct user returns
source
share