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.

Reply via email to