[rspec-users] Getting past my login system
Scott Taylor
mailing_lists at railsnewbie.com
Tue Jul 17 01:53:59 EDT 2007
You'll probably want to stub the method 'find' on the user class,
with a user mock:
before :each do
@user = mock_model User
User.stub!(:find).and_return @user
end
Then you can do the post on the controller you are spec'ing
You should also search the mailing list - this question has been
asked numerous times, in various forms. If none of those applies,
let us know how it is different.
Cheers,
Scott Taylor
On Jul 16, 2007, at 8:43 PM, 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
> 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
> http://rubyforge.org/mailman/listinfo/rspec-users
More information about the rspec-users
mailing list