-
Notifications
You must be signed in to change notification settings - Fork 2.1k
/
pipeline_test.rb
71 lines (60 loc) · 2.17 KB
/
pipeline_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
require File.dirname(__FILE__) + '/helper'
class UpcaseMiddleware
def initialize(app, *args, &block)
@app = app
@args = args
@block = block
end
def call(env)
env['PATH_INFO'] = env['PATH_INFO'].to_s.upcase
@app.call(env)
end
end
context "Middleware Pipelines" do
setup do
Sinatra.application = nil
@app = Sinatra.application
end
teardown do
Sinatra.application = nil
end
# Sessions and logging are tested elsewhere. This is a bad test because it
# asserts things about the implementation and not the effect.
xspecify "includes default middleware with options set" do
@app.set_options :sessions => true, :logging => true
@app.send(:optional_middleware).should.include([Rack::Session::Cookie, [], nil])
@app.send(:optional_middleware).should.include([Rack::CommonLogger, [], nil])
end
# Bad test.
xspecify "does not include default middleware with options unset" do
@app.set_options :sessions => false, :logging => false
@app.send(:optional_middleware).should.not.include([Rack::Session::Cookie, [], nil])
@app.send(:optional_middleware).should.not.include([Rack::CommonLogger, [], nil])
end
# Bad test.
xspecify "includes only optional middleware when no explicit middleware added" do
@app.set_options :sessions => true, :logging => true
@app.send(:middleware).should.equal @app.send(:optional_middleware)
end
# Bad test.
xspecify "should clear middleware before reload" do
@app.clearables.should.include(@app.send(:explicit_middleware))
end
specify "should add middleware with use" do
block = Proc.new { |env| }
@app.use UpcaseMiddleware
@app.use UpcaseMiddleware, "foo", "bar"
@app.use UpcaseMiddleware, "foo", "bar", &block
@app.send(:middleware).should.include([UpcaseMiddleware, [], nil])
@app.send(:middleware).should.include([UpcaseMiddleware, ["foo", "bar"], nil])
@app.send(:middleware).should.include([UpcaseMiddleware, ["foo", "bar"], block])
end
specify "should run middleware added with use" do
get('/foo') { "FAIL!" }
get('/FOO') { "PASS!" }
use UpcaseMiddleware
get_it '/foo'
should.be.ok
body.should.equal "PASS!"
end
end