diff options
Diffstat (limited to 'test/netlib/http/test_cookies.py')
-rw-r--r-- | test/netlib/http/test_cookies.py | 217 |
1 files changed, 125 insertions, 92 deletions
diff --git a/test/netlib/http/test_cookies.py b/test/netlib/http/test_cookies.py index efd8ba80..905f549c 100644 --- a/test/netlib/http/test_cookies.py +++ b/test/netlib/http/test_cookies.py @@ -5,18 +5,62 @@ from netlib.tutils import raises import mock +cookie_pairs = [ + [ + "", + [] + ], + [ + "one=uno", + [["one", "uno"]] + ], + [ + "one", + [["one", None]] + ], + [ + "one=uno; two=due", + [["one", "uno"], ["two", "due"]] + ], + [ + 'one="uno"; two="\due"', + [["one", "uno"], ["two", "due"]] + ], + [ + 'one="un\\"o"', + [["one", 'un"o']] + ], + [ + 'one="uno,due"', + [["one", 'uno,due']] + ], + [ + "one=uno; two; three=tre", + [["one", "uno"], ["two", None], ["three", "tre"]] + ], + [ + "_lvs2=zHai1+Hq+Tc2vmc2r4GAbdOI5Jopg3EwsdUT9g=; " + "_rcc2=53VdltWl+Ov6ordflA==;", + [ + ["_lvs2", "zHai1+Hq+Tc2vmc2r4GAbdOI5Jopg3EwsdUT9g="], + ["_rcc2", "53VdltWl+Ov6ordflA=="] + ] + ] +] + -def test_read_token(): +def test_read_key(): tokens = [ [("foo", 0), ("foo", 3)], [("foo", 1), ("oo", 3)], + [(" foo", 0), (" foo", 4)], [(" foo", 1), ("foo", 4)], [(" foo;", 1), ("foo", 4)], [(" foo=", 1), ("foo", 4)], [(" foo=bar", 1), ("foo", 4)], ] for q, a in tokens: - assert cookies._read_token(*q) == a + assert cookies._read_key(*q) == a def test_read_quoted_string(): @@ -32,7 +76,7 @@ def test_read_quoted_string(): assert cookies._read_quoted_string(*q) == a -def test_read_pairs(): +def test_read_cookie_pairs(): vals = [ [ "one", @@ -64,134 +108,90 @@ def test_read_pairs(): ], ] for s, lst in vals: - ret, off = cookies._read_pairs(s) + ret, off = cookies._read_cookie_pairs(s) assert ret == lst def test_pairs_roundtrips(): - pairs = [ - [ - "", - [] - ], - [ - "one=uno", - [["one", "uno"]] - ], - [ - "one", - [["one", None]] - ], - [ - "one=uno; two=due", - [["one", "uno"], ["two", "due"]] - ], - [ - 'one="uno"; two="\due"', - [["one", "uno"], ["two", "due"]] - ], - [ - 'one="un\\"o"', - [["one", 'un"o']] - ], - [ - 'one="uno,due"', - [["one", 'uno,due']] - ], - [ - "one=uno; two; three=tre", - [["one", "uno"], ["two", None], ["three", "tre"]] - ], - [ - "_lvs2=zHai1+Hq+Tc2vmc2r4GAbdOI5Jopg3EwsdUT9g=; " - "_rcc2=53VdltWl+Ov6ordflA==;", - [ - ["_lvs2", "zHai1+Hq+Tc2vmc2r4GAbdOI5Jopg3EwsdUT9g="], - ["_rcc2", "53VdltWl+Ov6ordflA=="] - ] - ] - ] - for s, lst in pairs: - ret, off = cookies._read_pairs(s) - assert ret == lst - s2 = cookies._format_pairs(lst) - ret, off = cookies._read_pairs(s2) - assert ret == lst + for s, expected in cookie_pairs: + ret, off = cookies._read_cookie_pairs(s) + assert ret == expected + + s2 = cookies._format_pairs(expected) + ret, off = cookies._read_cookie_pairs(s2) + assert ret == expected def test_cookie_roundtrips(): - pairs = [ - [ - "one=uno", - [["one", "uno"]] - ], - [ - "one=uno; two=due", - [["one", "uno"], ["two", "due"]] - ], - ] - for s, lst in pairs: + for s, expected in cookie_pairs: ret = cookies.parse_cookie_header(s) - assert ret == lst - s2 = cookies.format_cookie_header(ret) + assert ret == expected + + s2 = cookies.format_cookie_header(expected) ret = cookies.parse_cookie_header(s2) - assert ret == lst + assert ret == expected def test_parse_set_cookie_pairs(): pairs = [ [ "one=uno", - [ + [[ ["one", "uno"] - ] + ]] ], [ "one=un\x20", - [ + [[ ["one", "un\x20"] - ] + ]] ], [ "one=uno; foo", - [ + [[ ["one", "uno"], ["foo", None] - ] + ]] ], [ "mun=1.390.f60; " "expires=sun, 11-oct-2015 12:38:31 gmt; path=/; " "domain=b.aol.com", - [ + [[ ["mun", "1.390.f60"], ["expires", "sun, 11-oct-2015 12:38:31 gmt"], ["path", "/"], ["domain", "b.aol.com"] - ] + ]] ], [ r'rpb=190%3d1%2616726%3d1%2634832%3d1%2634874%3d1; ' 'domain=.rubiconproject.com; ' 'expires=mon, 11-may-2015 21:54:57 gmt; ' 'path=/', - [ + [[ ['rpb', r'190%3d1%2616726%3d1%2634832%3d1%2634874%3d1'], ['domain', '.rubiconproject.com'], ['expires', 'mon, 11-may-2015 21:54:57 gmt'], ['path', '/'] - ] + ]] ], ] - for s, lst in pairs: - ret = cookies._parse_set_cookie_pairs(s) - assert ret == lst - s2 = cookies._format_set_cookie_pairs(ret) - ret2 = cookies._parse_set_cookie_pairs(s2) - assert ret2 == lst + for s, expected in pairs: + ret, off = cookies._read_set_cookie_pairs(s) + assert ret == expected + + s2 = cookies._format_set_cookie_pairs(expected[0]) + ret2, off = cookies._read_set_cookie_pairs(s2) + assert ret2 == expected def test_parse_set_cookie_header(): + def set_cookie_equal(obs, exp): + assert obs[0] == exp[0] + assert obs[1] == exp[1] + assert obs[2].items(multi=True) == exp[2] + vals = [ [ "", None @@ -201,28 +201,61 @@ def test_parse_set_cookie_header(): ], [ "one=uno", - ("one", "uno", ()) + [ + ("one", "uno", ()) + ] ], [ "one=uno; foo=bar", - ("one", "uno", (("foo", "bar"),)) + [ + ("one", "uno", (("foo", "bar"),)) + ] ], [ "one=uno; foo=bar; foo=baz", - ("one", "uno", (("foo", "bar"), ("foo", "baz"))) + [ + ("one", "uno", (("foo", "bar"), ("foo", "baz"))) + ] + ], + # Comma Separated Variant of Set-Cookie Headers + [ + "foo=bar, doo=dar", + [ + ("foo", "bar", ()), + ("doo", "dar", ()), + ] + ], + [ + "foo=bar; path=/, doo=dar; roo=rar; zoo=zar", + [ + ("foo", "bar", (("path", "/"),)), + ("doo", "dar", (("roo", "rar"), ("zoo", "zar"))), + ] + ], + [ + "foo=bar; expires=Mon, 24 Aug 2037", + [ + ("foo", "bar", (("expires", "Mon, 24 Aug 2037"),)), + ] + ], + [ + "foo=bar; expires=Mon, 24 Aug 2037 00:00:00 GMT, doo=dar", + [ + ("foo", "bar", (("expires", "Mon, 24 Aug 2037 00:00:00 GMT"),)), + ("doo", "dar", ()), + ] ], ] for s, expected in vals: ret = cookies.parse_set_cookie_header(s) if expected: - assert ret[0] == expected[0] - assert ret[1] == expected[1] - assert ret[2].items(multi=True) == expected[2] - s2 = cookies.format_set_cookie_header(*ret) + for i in range(len(expected)): + set_cookie_equal(ret[i], expected[i]) + + s2 = cookies.format_set_cookie_header(ret) ret2 = cookies.parse_set_cookie_header(s2) - assert ret2[0] == expected[0] - assert ret2[1] == expected[1] - assert ret2[2].items(multi=True) == expected[2] + for i in range(len(expected)): + set_cookie_equal(ret2[i], expected[i]) else: assert ret is None |