mirror of
https://github.com/github/rails.git
synced 2026-01-09 14:48:08 -05:00
Merge pull request #4879 from kennyj/fix_4873
Fix GH #4873. Allow swapping same class middleware.
This commit is contained in:
@@ -93,8 +93,9 @@ module ActionDispatch
|
||||
end
|
||||
|
||||
def swap(target, *args, &block)
|
||||
insert_before(target, *args, &block)
|
||||
delete(target)
|
||||
index = assert_index(target, :before)
|
||||
insert(index, *args, &block)
|
||||
middlewares.delete_at(index + 1)
|
||||
end
|
||||
|
||||
def delete(target)
|
||||
|
||||
@@ -81,6 +81,12 @@ class MiddlewareStackTest < ActiveSupport::TestCase
|
||||
assert_equal BazMiddleware, @stack[0].klass
|
||||
end
|
||||
|
||||
test "swaps one middleware out for same middleware class" do
|
||||
assert_equal FooMiddleware, @stack[0].klass
|
||||
@stack.swap(FooMiddleware, FooMiddleware, Proc.new { |env| [500, {}, ['error!']] })
|
||||
assert_equal FooMiddleware, @stack[0].klass
|
||||
end
|
||||
|
||||
test "raise an error on invalid index" do
|
||||
assert_raise RuntimeError do
|
||||
@stack.insert("HiyaMiddleware", BazMiddleware)
|
||||
|
||||
Reference in New Issue
Block a user