mirror of
https://github.com/heartcombo/devise.git
synced 2022-11-09 12:18:31 -05:00
Fix taking associated failure app from the scope in the given env.
There is a delegator to get failure app, introduced in4629bee
and tuned in24b26026
. The latter commit introduced a bit of logic, however, no tests are included into commit. Needless to say this resulted in a broken code. The point is that `env["warden.options"][:scope]` returns a string. However, `Devise.mappings` is a hash with symbol keys. Adding tests and converting scope to symbol here.
This commit is contained in:
parent
94fca31be8
commit
f41e4befde
2 changed files with 21 additions and 2 deletions
|
@ -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
|
||||
end
|
||||
|
|
19
test/delegator_test.rb
Normal file
19
test/delegator_test.rb
Normal file
|
@ -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
|
Loading…
Add table
Reference in a new issue