[rspec-users] Getting past my login system
Ryan Tucker
rctucker at u.washington.edu
Mon Jul 16 20:43:38 EDT 2007
Thank you in advance for your help. I am relatively new to both Rails
and Rspec and I am hoping for some insight from some experienced veterans.
Right now I am using Rspec for code that has already been written so
that additional functionality can be developed using the BDD method. My
problem shows up when I try to spec controllers that are behind the
login system. Each page checks for the session[:user], and if they do
not exists, requires them to login. Logging in is handled by one
controller (the Admin controller) and I want to access a page under
another controller (say a Students controller).
In my students_controller_spec.rb, I want want to make sure
http://test.host/students is successfully displayed, so I wrote
something like:
it "should be successful" do
get :index
response.should be_success
end
The problem is that is keeps redirecting to my login page at
http://test.host/login. I tried then setting session[:user] and doing a
post to my login page to simulate a login so that I could access the
correct page, but that does not seem to work. I tried a number of
things, including the following:
def do_login
@user = User.find(:first, :conditions => ['username = ?' , 'ryan'] )
session[:user] = @user.id
post :login, :path => []
end
describe StudentsController do
it "should be successful" do
do_login
get :index
response.should be_success
end
end
This still results in being redirected to the login page at
http://test.host/login when I want to go to http://test.host/students.
Also, I realize I am actually doing a call on my test database for
this. Part of the reason is that code that called during login checks
fields of a user. The other reason is I could not get it to work using
stubs, but that might just have been because I was not using them properly.
Any insight will be helpful, thanks!
-Ryan
More information about the rspec-users
mailing list