aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test/controller/new_base/middleware_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/test/controller/new_base/middleware_test.rb')
-rw-r--r--actionpack/test/controller/new_base/middleware_test.rb22
1 files changed, 22 insertions, 0 deletions
diff --git a/actionpack/test/controller/new_base/middleware_test.rb b/actionpack/test/controller/new_base/middleware_test.rb
index 26a66c91a6..ccef060863 100644
--- a/actionpack/test/controller/new_base/middleware_test.rb
+++ b/actionpack/test/controller/new_base/middleware_test.rb
@@ -25,8 +25,25 @@ module MiddlewareTest
result
end
end
+
+ class BlockMiddleware
+ attr_accessor :configurable_message
+ def initialize(app, &block)
+ @app = app
+ yield(self) if block_given?
+ end
+
+ def call(env)
+ result = @app.call(env)
+ result[1]["Configurable-Message"] = configurable_message
+ result
+ end
+ end
class MyController < ActionController::Metal
+ use BlockMiddleware do |config|
+ config.configurable_message = "Configured by block."
+ end
use MyMiddleware
middleware.insert_before MyMiddleware, ExclaimerMiddleware
@@ -67,6 +84,11 @@ module MiddlewareTest
assert_equal "First!", result[1]["Middleware-Order"]
end
+ test "middleware stack accepts block arguments" do
+ result = @app.call(env_for("/"))
+ assert_equal "Configured by block.", result[1]["Configurable-Message"]
+ end
+
test "middleware stack accepts only and except as options" do
result = ActionsController.action(:show).call(env_for("/"))
assert_equal "First!", result[1]["Middleware-Order"]