aboutsummaryrefslogtreecommitdiffstats
path: root/test/netlib/http/test_cookies.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/netlib/http/test_cookies.py')
-rw-r--r--test/netlib/http/test_cookies.py217
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