diff --git a/lib/devise/delegator.rb b/lib/devise/delegator.rb index 1e7c8b79..361d4cff 100644 --- a/lib/devise/delegator.rb +++ b/lib/devise/delegator.rb @@ -8,9 +8,9 @@ module Devise def failure_app(env) app = env["warden.options"] && (scope = env["warden.options"][:scope]) && - Devise.mappings[scope].failure_app + Devise.mappings[scope.to_sym].failure_app app || Devise::FailureApp end end -end \ No newline at end of file +end diff --git a/test/delegator_test.rb b/test/delegator_test.rb new file mode 100644 index 00000000..1618be10 --- /dev/null +++ b/test/delegator_test.rb @@ -0,0 +1,19 @@ +require 'test_helper' + +class DelegatorTest < ActiveSupport::TestCase + def delegator + Devise::Delegator.new + end + + test 'failure_app returns default failure app if no warden options in env' do + assert_equal Devise::FailureApp, delegator.failure_app({}) + end + + test 'failure_app returns default failure app if no scope in warden options' do + assert_equal Devise::FailureApp, delegator.failure_app({"warden.options" => {}}) + end + + test 'failure_app returns associated failure app by scope in the given environment' do + assert_kind_of Proc, delegator.failure_app({"warden.options" => {:scope => "manager"}}) + end +end