diff options
author | Eric Wong <normalperson@yhbt.net> | 2009-06-30 13:47:41 -0700 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2009-06-30 14:02:10 -0700 |
commit | 608e6243a2b15bfc28c3524ed45d5fc7598e8565 (patch) | |
tree | 69bcc5904e91f87c605170605b0f564683558367 /test | |
parent | 86cd3fec9a02352d10b53bac02f98267d2b77bdd (diff) | |
download | unicorn-608e6243a2b15bfc28c3524ed45d5fc7598e8565.tar.gz |
Eventually this (and ChunkedReader) may be done in C/Ragel along with the existing HttpParser.
Diffstat (limited to 'test')
-rw-r--r-- | test/unit/test_trailer_parser.rb | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/test/unit/test_trailer_parser.rb b/test/unit/test_trailer_parser.rb new file mode 100644 index 0000000..e41d00f --- /dev/null +++ b/test/unit/test_trailer_parser.rb @@ -0,0 +1,52 @@ +require 'test/unit' +require 'unicorn' +require 'unicorn/http11' +require 'unicorn/trailer_parser' + +class TestTrailerParser < Test::Unit::TestCase + + def test_basic + tp = Unicorn::TrailerParser.new('Content-MD5') + env = {} + assert ! tp.execute!(env, "Content-MD5: asdf") + assert env.empty? + assert tp.execute!(env, "Content-MD5: asdf\r\n") + assert_equal 'asdf', env['CONTENT_MD5'] + assert_equal 1, env.size + end + + def test_invalid_trailer + tp = Unicorn::TrailerParser.new('Content-MD5') + env = {} + assert_raises(Unicorn::HttpParserError) { + tp.execute!(env, "Content-MD: asdf\r\n") + } + assert env.empty? + end + + def test_multiple_trailer + tp = Unicorn::TrailerParser.new('Foo,Bar') + env = {} + buf = "Bar: a\r\nFoo: b\r\n" + assert tp.execute!(env, buf) + assert_equal 'a', env['BAR'] + assert_equal 'b', env['FOO'] + end + + def test_too_big_key + tp = Unicorn::TrailerParser.new('Foo,Bar') + env = {} + buf = "Bar#{'a' * 1024}: a\r\nFoo: b\r\n" + assert_raises(Unicorn::HttpParserError) { tp.execute!(env, buf) } + assert env.empty? + end + + def test_too_big_value + tp = Unicorn::TrailerParser.new('Foo,Bar') + env = {} + buf = "Bar: #{'a' * (1024 * 1024)}: a\r\nFoo: b\r\n" + assert_raises(Unicorn::HttpParserError) { tp.execute!(env, buf) } + assert env.empty? + end + +end |