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 > [email protected] > http://rubyforge.org/mailman/listinfo/rspec-users _______________________________________________ rspec-users mailing list [email protected] http://rubyforge.org/mailman/listinfo/rspec-users
