[rspec-users] Getting past my login system
Daniel N
has.sox at gmail.com
Mon Jul 16 23:38:47 EDT 2007
On 7/17/07, Ryan Tucker <rctucker at u.washington.edu> wrote:
>
> Daniel N wrote:
> >
> >
> > On 7/17/07, *Ryan Tucker* <rctucker at u.washington.edu
> > <mailto:rctucker at u.washington.edu>> wrote:
> >
> > Ryan Tucker wrote:
> > > 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 <http://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
> > > _______________________________________________
> > > rspec-users mailing list
> > > rspec-users at rubyforge.org <mailto:rspec-users at rubyforge.org>
> > > http://rubyforge.org/mailman/listinfo/rspec-users
> > >
> > Forgot one thing.
> >
> > In trying to do the post, I get the error that "No action
> > responded to
> > login" suggesting that I am not properly accessing the login
> > function in
> > my Admin controller.
> >
> > Thanks again,
> > Ryan
> >
> >
> >
> > Ryan, the login action is being called on your StudentsController and
> > so it's not found.
> >
> > If it's the presence of the session[:user] that tells the
> > before_filter that your logged in, the you don't need to do the post.
> > In fact you shouldn't post, since as you found out if you post to
> > login, your posting to the login action of the controller your
> > currently in. Bad. Your setting the session and you shouldn't need
> > to do any more.
> >
> > HTH
> > Daniel
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > rspec-users mailing list
> > rspec-users at rubyforge.org
> > http://rubyforge.org/mailman/listinfo/rspec-users
> Thanks, Daniel.
>
> That was my understanding as well, but, for some reason, that has not
> been enough. The post was an attempt to simulate an actual login by
> posting to another controller (I know it was bad...) since just setting
> the session[:user] was not a success. Thank you for your help though.
>
> Take care,
> Ryan
Can you post your before_filter method that checks if your logged in?
Also your login method in your Admin controller.
Cheers
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://rubyforge.org/pipermail/rspec-users/attachments/20070717/f06acd2a/attachment.html
More information about the rspec-users
mailing list