in one of my functional test, I check the followoing :
def test_user_should_not_show_documents
login_as (:quentin)
assert_raise (Exceptions::SecurityTransgression) { get :show, :id
=> 2, :franchise_id => 3 }
end
In my controller , I wrote :
before_filter :login_required
before_filter :find_parent
def show
raise SecurityTransgression unless @parent.can_be_edited_by?
(current_user)
@document = Document.find(params[:id].to_i)
…
end
I wrote the exception class and rescue action in my application.rb
class SecurityTransgression < StandardError; end
class ApplicationController < ActionController::Base
include AuthenticatedSystem
…
def rescue_action_locally(exception)
begin
case exception
when ::Exceptions::SecurityTransgression
render :file => “#{RAILS_ROOT}/public/403.html”, :status =>
403
…
end
in testing, the exception is raised, (as @parent cannot be edited by
the current_user… I checked it…) the log gives a failure I cannot
explain :
- Failure:
test_user_should_not_show_documents(DocumentsControllerTest)
[./test/functional/documents_controller_test.rb:66:in
test_user_should_not_show_documents' /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/ active_support/testing/setup_and_teardown.rb:67:in
send’
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/
active_support/testing/setup_and_teardown.rb:67:inrun']: <Exceptions::SecurityTransgression> exception expected but was Class: <SecurityTransgression> Message: <"SecurityTransgression"> ---Backtrace--- /Users/yves/Developpement/Projects/aelmat/intranet/app/controllers/ documents_controller.rb:19:in
show’
…
the exception is expected, but …
what could be the problem ?
Note : I am using the same assert_raise
(Exceptions::SecurityTransgression) in testing another controller
without any problem …
thanks for your suggestions
erwin