Please pretend I never sent this. My test had the wrong action (new instead of index). No duh it was not hitting the code.
On Sat, Oct 2, 2010 at 1:58 PM, David Kahn <[email protected]>wrote: > I am writing a few low level tests for my controllers to verify security. > New to rspec and am seeing some unexpected activity: > > If I run this spec: > > describe "GET index" do > it "does not load for guest role" do > get :new > flash[:notice].should match RESTRICTED_PAGE_NOTICE > response.should redirect_to(login_path) > end > > Which hits > > class PracticesController < ApplicationController > > def index > @practices = Practice.all > > respond_to do |format| > format.html # index.html.erb > end > end > > end > > But the controller also inherits from the application controller which: > > class ApplicationController > ... > when 'practices' > flash[:notice] = RESTRICTED_PAGE_NOTICE > redirect_to login_path if action_name != 'new' && action_name != > 'create' > end > > I have verified the redirect and message in a browser, so this code is > executing as expected in 'reality'. > > > Then why do I get this error: > > 1) PracticesController GET index does not load for guest role > Failure/Error: response.should redirect_to(login_path) > *Expected response to be a <:redirect>, but was <200>.* > Expected block to return true value. > > > It is true, if the controller is isolated and not inheriting from the app > controller, it would be a 200. But with the app controller it should > redirect before it ever hits the method. > > The line in the app controller "flash[:notice] = RESTRICTED_PAGE_NOTICE" > clearly gets evaluated as the line in the spec "flash[:notice].should match > RESTRICTED_PAGE_NOTICE" passes, *BUT* this line in the app controller > "redirect_to login_path if action_name != 'new' && action_name != 'create'" > does not get evaluated as rspec says I have a 200 response? I am really > confused and don't like what feels to be a weird paradox.... > > Can anyone enlighten me? > > Thanks, > > David > > > > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

