David Kahn
2010-Oct-02 18:58 UTC
Lacking some enlightenment on why rspec says I have a 200 response when I do not
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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.