mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2025-02-02 00:05:27 +00:00
keeping consistency, better testing
This commit is contained in:
parent
4e9d4b37b3
commit
06f689aa34
@ -114,12 +114,11 @@ def _read_cookie_pairs(s, off=0):
|
||||
lhs, off = _read_key(s, off)
|
||||
lhs = lhs.lstrip()
|
||||
|
||||
if lhs is not None:
|
||||
rhs = None
|
||||
if off < len(s) and s[off] == "=":
|
||||
rhs, off = _read_value(s, off + 1, ";")
|
||||
if rhs or lhs:
|
||||
pairs.append([lhs, rhs])
|
||||
rhs = ""
|
||||
if off < len(s) and s[off] == "=":
|
||||
rhs, off = _read_value(s, off + 1, ";")
|
||||
if rhs or lhs:
|
||||
pairs.append([lhs, rhs])
|
||||
|
||||
off += 1
|
||||
|
||||
@ -143,26 +142,25 @@ def _read_set_cookie_pairs(s: str, off=0) -> Tuple[List[TPairs], int]:
|
||||
lhs, off = _read_key(s, off, ";=,")
|
||||
lhs = lhs.lstrip()
|
||||
|
||||
if lhs is not None:
|
||||
rhs = None
|
||||
if off < len(s) and s[off] == "=":
|
||||
rhs, off = _read_value(s, off + 1, ";,")
|
||||
rhs = ""
|
||||
if off < len(s) and s[off] == "=":
|
||||
rhs, off = _read_value(s, off + 1, ";,")
|
||||
|
||||
# Special handling of attributes
|
||||
if lhs.lower() == "expires":
|
||||
# 'expires' values can contain commas in them so they need to
|
||||
# be handled separately.
|
||||
# Special handling of attributes
|
||||
if lhs.lower() == "expires":
|
||||
# 'expires' values can contain commas in them so they need to
|
||||
# be handled separately.
|
||||
|
||||
# We actually bank on the fact that the expires value WILL
|
||||
# contain a comma. Things will fail, if they don't.
|
||||
# We actually bank on the fact that the expires value WILL
|
||||
# contain a comma. Things will fail, if they don't.
|
||||
|
||||
# '3' is just a heuristic we use to determine whether we've
|
||||
# only read a part of the expires value and we should read more.
|
||||
if len(rhs) <= 3:
|
||||
trail, off = _read_value(s, off + 1, ";,")
|
||||
rhs = rhs + "," + trail
|
||||
if rhs or lhs:
|
||||
pairs.append([lhs, rhs])
|
||||
# '3' is just a heuristic we use to determine whether we've
|
||||
# only read a part of the expires value and we should read more.
|
||||
if len(rhs) <= 3:
|
||||
trail, off = _read_value(s, off + 1, ";,")
|
||||
rhs = rhs + "," + trail
|
||||
if rhs or lhs:
|
||||
pairs.append([lhs, rhs])
|
||||
|
||||
# comma marks the beginning of a new cookie
|
||||
if off < len(s) and s[off] == ",":
|
||||
@ -196,13 +194,10 @@ def _format_pairs(pairs, specials=(), sep="; "):
|
||||
"""
|
||||
vals = []
|
||||
for k, v in pairs:
|
||||
if v is None:
|
||||
vals.append(k)
|
||||
else:
|
||||
if k.lower() not in specials and _has_special(v):
|
||||
v = ESCAPE.sub(r"\\\1", v)
|
||||
v = '"%s"' % v
|
||||
vals.append("%s=%s" % (k, v))
|
||||
if k.lower() not in specials and _has_special(v):
|
||||
v = ESCAPE.sub(r"\\\1", v)
|
||||
v = '"%s"' % v
|
||||
vals.append("%s=%s" % (k, v))
|
||||
return sep.join(vals)
|
||||
|
||||
|
||||
|
@ -20,7 +20,7 @@ cookie_pairs = [
|
||||
],
|
||||
[
|
||||
"one",
|
||||
[["one", None]]
|
||||
[["one", ""]]
|
||||
],
|
||||
[
|
||||
"one=uno; two=due",
|
||||
@ -40,7 +40,7 @@ cookie_pairs = [
|
||||
],
|
||||
[
|
||||
"one=uno; two; three=tre",
|
||||
[["one", "uno"], ["two", None], ["three", "tre"]]
|
||||
[["one", "uno"], ["two", ""], ["three", "tre"]]
|
||||
],
|
||||
[
|
||||
"_lvs2=zHai1+Hq+Tc2vmc2r4GAbdOI5Jopg3EwsdUT9g=; "
|
||||
@ -82,9 +82,13 @@ def test_read_quoted_string():
|
||||
|
||||
def test_read_cookie_pairs():
|
||||
vals = [
|
||||
[
|
||||
"=uno",
|
||||
[["", "uno"]]
|
||||
],
|
||||
[
|
||||
"one",
|
||||
[["one", None]]
|
||||
[["one", ""]]
|
||||
],
|
||||
[
|
||||
"one=two",
|
||||
@ -104,7 +108,7 @@ def test_read_cookie_pairs():
|
||||
],
|
||||
[
|
||||
'one="two"; three=four; five',
|
||||
[["one", "two"], ["three", "four"], ["five", None]]
|
||||
[["one", "two"], ["three", "four"], ["five", ""]]
|
||||
],
|
||||
[
|
||||
'one="\\"two"; three=four',
|
||||
@ -138,6 +142,12 @@ def test_cookie_roundtrips():
|
||||
|
||||
def test_parse_set_cookie_pairs():
|
||||
pairs = [
|
||||
[
|
||||
"=uno",
|
||||
[[
|
||||
["", "uno"]
|
||||
]]
|
||||
],
|
||||
[
|
||||
"one=uno",
|
||||
[[
|
||||
@ -154,7 +164,7 @@ def test_parse_set_cookie_pairs():
|
||||
"one=uno; foo",
|
||||
[[
|
||||
["one", "uno"],
|
||||
["foo", None]
|
||||
["foo", ""]
|
||||
]]
|
||||
],
|
||||
[
|
||||
@ -203,6 +213,12 @@ def test_parse_set_cookie_header():
|
||||
[
|
||||
";", []
|
||||
],
|
||||
[
|
||||
"=uno",
|
||||
[
|
||||
("", "uno", ())
|
||||
]
|
||||
],
|
||||
[
|
||||
"one=uno",
|
||||
[
|
||||
|
@ -113,7 +113,7 @@ class TestResponseUtils:
|
||||
assert attrs["domain"] == "example.com"
|
||||
assert attrs["expires"] == "Wed Oct 21 16:29:41 2015"
|
||||
assert attrs["path"] == "/"
|
||||
assert attrs["httponly"] is None
|
||||
assert attrs["httponly"] == ""
|
||||
|
||||
def test_get_cookies_no_value(self):
|
||||
resp = tresp()
|
||||
|
Loading…
Reference in New Issue
Block a user