mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
77 lines
1.6 KiB
Ruby
77 lines
1.6 KiB
Ruby
require 'abstract_unit'
|
|
|
|
module MiddlewareTest
|
|
class MyMiddleware
|
|
def initialize(app)
|
|
@app = app
|
|
end
|
|
|
|
def call(env)
|
|
result = @app.call(env)
|
|
result[1]["Middleware-Test"] = "Success"
|
|
result[1]["Middleware-Order"] = "First"
|
|
result
|
|
end
|
|
end
|
|
|
|
class ExclaimerMiddleware
|
|
def initialize(app)
|
|
@app = app
|
|
end
|
|
|
|
def call(env)
|
|
result = @app.call(env)
|
|
result[1]["Middleware-Order"] << "!"
|
|
result
|
|
end
|
|
end
|
|
|
|
class MyController < ActionController::Metal
|
|
use MyMiddleware
|
|
|
|
middleware.insert_before MyMiddleware, ExclaimerMiddleware
|
|
|
|
def index
|
|
self.response_body = "Hello World"
|
|
end
|
|
end
|
|
|
|
class InheritedController < MyController
|
|
end
|
|
|
|
module MiddlewareTests
|
|
extend ActiveSupport::Testing::Declarative
|
|
|
|
test "middleware that is 'use'd is called as part of the Rack application" do
|
|
result = @app.call(env_for("/"))
|
|
assert_equal "Hello World", result[2]
|
|
assert_equal "Success", result[1]["Middleware-Test"]
|
|
end
|
|
|
|
test "the middleware stack is exposed as 'middleware' in the controller" do
|
|
result = @app.call(env_for("/"))
|
|
assert_equal "First!", result[1]["Middleware-Order"]
|
|
end
|
|
end
|
|
|
|
class TestMiddleware < ActiveSupport::TestCase
|
|
include MiddlewareTests
|
|
|
|
def setup
|
|
@app = MyController.action(:index)
|
|
end
|
|
|
|
def env_for(url)
|
|
Rack::MockRequest.env_for(url)
|
|
end
|
|
end
|
|
|
|
class TestInheritedMiddleware < TestMiddleware
|
|
def setup
|
|
@app = InheritedController.action(:index)
|
|
end
|
|
|
|
test "middleware inherits" do
|
|
end
|
|
end
|
|
end
|