test/test_clogger.rb in clogger-0.0.7 vs test/test_clogger.rb in clogger-0.1.0

- old
+ new

@@ -5,10 +5,15 @@ require "stringio" require "rack" require "clogger" + +# used to test subclasses +class FooString < String +end + class TestClogger < Test::Unit::TestCase include Clogger::Format def setup @req = { @@ -388,9 +393,44 @@ def test_broken_header_response str = StringIO.new app = lambda { |env| [302, [ %w(a) ], []] } cl = Clogger.new(app, :logger => str, :format => '$sent_http_set_cookie') assert_nothing_raised { cl.call(@req) } + end + + def test_subclass_hash + str = StringIO.new + req = Rack::Utils::HeaderHash.new(@req) + app = lambda { |env| [302, [ %w(a) ], []] } + cl = Clogger.new(app, :logger => str, :format => Rack_1_0) + assert_nothing_raised { cl.call(req).last.each {} } + assert str.size > 0 + end + + def test_subclassed_string_req + str = StringIO.new + req = {} + @req.each { |key,value| + req[FooString.new(key)] = value.kind_of?(String) ? + FooString.new(value) : value + } + app = lambda { |env| [302, [ %w(a) ], []] } + cl = Clogger.new(app, :logger => str, :format => Rack_1_0) + assert_nothing_raised { cl.call(req).last.each {} } + assert str.size > 0 + end + + def test_subclassed_string_in_body + str = StringIO.new + body = "hello" + r = nil + app = lambda { |env| [302, [ %w(a) ], [FooString.new(body)]] } + cl = Clogger.new(app, :logger => str, :format => '$body_bytes_sent') + assert_nothing_raised { cl.call(@req).last.each { |x| r = x } } + assert str.size > 0 + assert_equal body.size.to_s << "\n", str.string + assert_equal r, body + assert r.object_id != body.object_id end def test_http_09_request str = StringIO.new app = lambda { |env| [302, [ %w(a) ], []] }