Sha256: ea6b0eb840755d5a595675626ae54d7fe757af85e189da0ec5f38f907a446d02
Contents?: true
Size: 1.34 KB
Versions: 3
Compression:
Stored size: 1.34 KB
Contents
require File.dirname(__FILE__) + '/helper' describe "Middleware" do before do @app = mock_app(Sinatra::Default) { get '/*' do response.headers['X-Tests'] = env['test.ran'].join(', ') env['PATH_INFO'] end } end class MockMiddleware < Struct.new(:app) def call(env) (env['test.ran'] ||= []) << self.class.to_s app.call(env) end end class UpcaseMiddleware < MockMiddleware def call(env) env['PATH_INFO'] = env['PATH_INFO'].upcase super end end it "is added with Sinatra::Application.use" do @app.use UpcaseMiddleware get '/hello-world' assert ok? assert_equal '/HELLO-WORLD', body end class DowncaseMiddleware < MockMiddleware def call(env) env['PATH_INFO'] = env['PATH_INFO'].downcase super end end it "runs in the order defined" do @app.use UpcaseMiddleware @app.use DowncaseMiddleware get '/Foo' assert_equal "/foo", body assert_equal "UpcaseMiddleware, DowncaseMiddleware", response['X-Tests'] end it "resets the prebuilt pipeline when new middleware is added" do @app.use UpcaseMiddleware get '/Foo' assert_equal "/FOO", body @app.use DowncaseMiddleware get '/Foo' assert_equal '/foo', body assert_equal "UpcaseMiddleware, DowncaseMiddleware", response['X-Tests'] end end
Version data entries
3 entries across 3 versions & 3 rubygems
Version | Path |
---|---|
Syd-sinatra-0.9.0.4 | test/middleware_test.rb |
bmizerany-sinatra-0.9.0.4 | test/middleware_test.rb |
sinatra-sinatra-0.9.0.4 | test/middleware_test.rb |