diff options
author | Eric Wong <normalperson@yhbt.net> | 2009-03-21 19:29:44 -0700 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2009-03-21 19:29:44 -0700 |
commit | 771ee626338c8fa00f8eedda9bdfbbddb5206491 (patch) | |
tree | 841000a8732a416e790b755c81e5085426969fb7 /test | |
parent | 9a59450a8f8cb415fa11ddbf5bf375c9cb7829d3 (diff) | |
download | unicorn-771ee626338c8fa00f8eedda9bdfbbddb5206491.tar.gz |
Rack uses a single newline character to represent multi-value headers. Thus { 'Set-Cookie' => "foo=bar\nbar=foo" } will get you: Set-Cookie: foo=bar Set-Cookie: bar=foo While RFC2616 says you can combine headers as: Set-Cookie: foo=bar,bar=foo There are probably HTTP clients out there that don't handle things correctly so don't bother... Additionally, don't bother doing duplicate suppression anymore. Just assume Rack or a higher layer knows what it's doing regarding duplicates and we'll get a Hash most of the time anyways.
Diffstat (limited to 'test')
-rw-r--r-- | test/unit/test_response.rb | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/test/unit/test_response.rb b/test/unit/test_response.rb index c30a141..4c7423b 100644 --- a/test/unit/test_response.rb +++ b/test/unit/test_response.rb @@ -41,5 +41,12 @@ class ResponseTest < Test::Unit::TestCase io.rewind assert_match(/.* #{HTTP_STATUS_CODES[code]}$/, io.readline.chomp, "wrong default reason phrase") end + + def test_rack_multivalue_headers + out = StringIO.new + HttpResponse.write(out,[200, {"X-Whatever" => "stuff\nbleh"}, []]) + assert_match(/^X-Whatever: stuff\r\nX-Whatever: bleh\r\n/, out.string) + end + end |