about summary refs log tree commit homepage
path: root/test/test_parser.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_parser.rb')
-rw-r--r--test/test_parser.rb35
1 files changed, 35 insertions, 0 deletions
diff --git a/test/test_parser.rb b/test/test_parser.rb
index 7eab684..dab2e77 100644
--- a/test/test_parser.rb
+++ b/test/test_parser.rb
@@ -254,4 +254,39 @@ class TestParser < Test::Unit::TestCase
     end
   end
 
+  def test_leading_tab
+    resp = "HTTP/1.1 200 OK\r\nHost:\texample.com\r\n\r\n"
+    assert @hp.headers(env = {}, resp)
+    assert_equal 'example.com', env['Host']
+  end
+
+  def test_trailing_whitespace
+    resp = "HTTP/1.1 200 OK\r\nHost: example.com \r\n\r\n"
+    assert @hp.headers(env = {}, resp)
+    assert_equal 'example.com', env['Host']
+  end
+
+  def test_trailing_tab
+    resp = "HTTP/1.1 200 OK\r\nHost: example.com\t\r\n\r\n"
+    assert @hp.headers(env = {}, resp)
+    assert_equal 'example.com', env['Host']
+  end
+
+  def test_trailing_multiple_linear_whitespace
+    resp = "HTTP/1.1 200 OK\r\nHost: example.com\t \t \t\r\n\r\n"
+    assert @hp.headers(env = {}, resp)
+    assert_equal 'example.com', env['Host']
+  end
+
+  def test_embedded_linear_whitespace_ok
+    resp = "HTTP/1.1 200 OK\r\nX-Space: hello\t world\t \r\n\r\n"
+    assert @hp.headers(env = {}, resp)
+    assert_equal "hello\t world", env["X-Space"]
+  end
+
+  def test_empty_header
+    resp = "HTTP/1.1 200 OK\r\nHost:  \r\n\r\n"
+    assert @hp.headers(env = {}, resp)
+    assert_equal '', env['Host']
+  end
 end