trailer_parser: set keys with "HTTP_" prefix
[unicorn.git] / test / unit / test_trailer_parser.rb
blob840e9addc46bf6212c26c9fed55bfd07ef93d817
1 require 'test/unit'
2 require 'unicorn'
3 require 'unicorn/http11'
4 require 'unicorn/trailer_parser'
6 class TestTrailerParser < Test::Unit::TestCase
8   def test_basic
9     tp = Unicorn::TrailerParser.new('Content-MD5')
10     env = {}
11     assert ! tp.execute!(env, "Content-MD5: asdf")
12     assert env.empty?
13     assert tp.execute!(env, "Content-MD5: asdf\r\n")
14     assert_equal 'asdf', env['HTTP_CONTENT_MD5']
15     assert_equal 1, env.size
16   end
18   def test_invalid_trailer
19     tp = Unicorn::TrailerParser.new('Content-MD5')
20     env = {}
21     assert_raises(Unicorn::HttpParserError) {
22       tp.execute!(env, "Content-MD: asdf\r\n")
23     }
24     assert env.empty?
25   end
27   def test_multiple_trailer
28     tp = Unicorn::TrailerParser.new('Foo,Bar')
29     env = {}
30     buf = "Bar: a\r\nFoo: b\r\n"
31     assert tp.execute!(env, buf)
32     assert_equal 'a', env['HTTP_BAR']
33     assert_equal 'b', env['HTTP_FOO']
34   end
36   def test_too_big_key
37     tp = Unicorn::TrailerParser.new('Foo,Bar')
38     env = {}
39     buf = "Bar#{'a' * 1024}: a\r\nFoo: b\r\n"
40     assert_raises(Unicorn::HttpParserError) { tp.execute!(env, buf) }
41     assert env.empty?
42   end
44   def test_too_big_value
45     tp = Unicorn::TrailerParser.new('Foo,Bar')
46     env = {}
47     buf = "Bar: #{'a' * (1024 * 1024)}: a\r\nFoo: b\r\n"
48     assert_raises(Unicorn::HttpParserError) { tp.execute!(env, buf) }
49     assert env.empty?
50   end
52 end