2009-12-19 03:16:58 +01:00
|
|
|
require 'test/spec'
|
|
|
|
require 'stringio'
|
|
|
|
|
|
|
|
require 'rack/commonlogger'
|
|
|
|
require 'rack/lobster'
|
|
|
|
require 'rack/mock'
|
|
|
|
|
|
|
|
context "Rack::CommonLogger" do
|
|
|
|
app = lambda { |env|
|
2009-12-26 21:00:18 +01:00
|
|
|
[200,
|
|
|
|
{"Content-Type" => "text/html", "Content-Length" => length.to_s},
|
|
|
|
[obj]]}
|
|
|
|
app_without_length = lambda { |env|
|
2009-12-19 03:16:58 +01:00
|
|
|
[200,
|
|
|
|
{"Content-Type" => "text/html"},
|
2009-12-26 21:00:18 +01:00
|
|
|
[]]}
|
|
|
|
app_with_zero_length = lambda { |env|
|
|
|
|
[200,
|
|
|
|
{"Content-Type" => "text/html", "Content-Length" => "0"},
|
|
|
|
[]]}
|
2009-12-19 03:16:58 +01:00
|
|
|
|
|
|
|
specify "should log to rack.errors by default" do
|
|
|
|
res = Rack::MockRequest.new(Rack::CommonLogger.new(app)).get("/")
|
|
|
|
|
|
|
|
res.errors.should.not.be.empty
|
2009-12-26 21:00:18 +01:00
|
|
|
res.errors.should =~ /"GET \/ " 200 #{length} /
|
2009-12-19 03:16:58 +01:00
|
|
|
end
|
|
|
|
|
2009-12-26 21:00:18 +01:00
|
|
|
specify "should log to anything with +write+" do
|
|
|
|
log = StringIO.new
|
2009-12-19 03:16:58 +01:00
|
|
|
res = Rack::MockRequest.new(Rack::CommonLogger.new(app, log)).get("/")
|
|
|
|
|
2009-12-26 21:00:18 +01:00
|
|
|
log.string.should =~ /"GET \/ " 200 #{length} /
|
|
|
|
end
|
|
|
|
|
|
|
|
specify "should log - content length if header is missing" do
|
|
|
|
res = Rack::MockRequest.new(Rack::CommonLogger.new(app_without_length)).get("/")
|
|
|
|
|
|
|
|
res.errors.should.not.be.empty
|
|
|
|
res.errors.should =~ /"GET \/ " 200 - /
|
|
|
|
end
|
|
|
|
|
|
|
|
specify "should log - content length if header is zero" do
|
|
|
|
res = Rack::MockRequest.new(Rack::CommonLogger.new(app_with_zero_length)).get("/")
|
|
|
|
|
|
|
|
res.errors.should.not.be.empty
|
|
|
|
res.errors.should =~ /"GET \/ " 200 - /
|
|
|
|
end
|
|
|
|
|
|
|
|
def length
|
|
|
|
self.class.length
|
|
|
|
end
|
|
|
|
|
|
|
|
def self.length
|
|
|
|
123
|
|
|
|
end
|
|
|
|
|
|
|
|
def self.obj
|
|
|
|
"hello world"
|
2009-12-19 03:16:58 +01:00
|
|
|
end
|
|
|
|
end
|