diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/webrick/test_cookie.rb | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/test/webrick/test_cookie.rb b/test/webrick/test_cookie.rb index 48f0235aeb..1652f39ee0 100644 --- a/test/webrick/test_cookie.rb +++ b/test/webrick/test_cookie.rb @@ -34,6 +34,7 @@ class TestWEBrickCookie < Test::Unit::TestCase data << 'Part_Number="Rocket_Launcher_0001"; $Path="/acme"; ' data << 'Shipping="FedEx"; $Path="/acme"' cookies = WEBrick::Cookie.parse(data) + assert_equal(3, cookies.size) assert_equal(1, cookies[0].version) assert_equal("Customer", cookies[0].name) assert_equal("WILE_E_COYOTE", cookies[0].value) @@ -54,24 +55,30 @@ class TestWEBrickCookie < Test::Unit::TestCase assert_equal("9865ecfd514be7f7", cookies[1].value) end - def test_parse_non_whitespace + def test_parse_no_whitespace data = [ - '$Version="1";', - 'Customer="WILE_E_COYOTE";$Path="/acme";', - 'Part_Number="Rocket_Launcher_0001";$Path="/acme";', + '$Version="1"; ', + 'Customer="WILE_E_COYOTE";$Path="/acme";', # no SP between cookie-string + 'Part_Number="Rocket_Launcher_0001";$Path="/acme";', # no SP between cookie-string 'Shipping="FedEx";$Path="/acme"' ].join cookies = WEBrick::Cookie.parse(data) - assert_equal(1, cookies[0].version) - assert_equal("Customer", cookies[0].name) - assert_equal("WILE_E_COYOTE", cookies[0].value) - assert_equal("/acme", cookies[0].path) - assert_equal(1, cookies[1].version) - assert_equal("Part_Number", cookies[1].name) - assert_equal("Rocket_Launcher_0001", cookies[1].value) - assert_equal(1, cookies[2].version) - assert_equal("Shipping", cookies[2].name) - assert_equal("FedEx", cookies[2].value) + assert_equal(1, cookies.size) + end + + def test_parse_too_much_whitespaces + # According to RFC6265, + # cookie-string = cookie-pair *( ";" SP cookie-pair ) + # So single 0x20 is needed after ';'. We allow multiple spaces here for + # compatibility with older WEBrick versions. + data = [ + '$Version="1"; ', + 'Customer="WILE_E_COYOTE";$Path="/acme"; ', # no SP between cookie-string + 'Part_Number="Rocket_Launcher_0001";$Path="/acme"; ', # no SP between cookie-string + 'Shipping="FedEx";$Path="/acme"' + ].join + cookies = WEBrick::Cookie.parse(data) + assert_equal(3, cookies.size) end def test_parse_set_cookie |