Add set_cookies method to HTTPResponse

This commit is contained in:
Aldo Cortesi 2015-04-14 16:23:51 +12:00
parent ab7e2857cc
commit c335c2b533
2 changed files with 30 additions and 0 deletions

View File

@ -918,6 +918,25 @@ class HTTPResponse(HTTPMessage):
ret.append([name, [value, attrs]]) ret.append([name, [value, attrs]])
return odict.ODict(ret) return odict.ODict(ret)
def set_cookies(self, odict):
"""
Set the Set-Cookie headers on this response, over-writing existing
headers.
Accepts an ODict of the same format as that returned by get_cookies.
"""
values = []
for i in odict.lst:
values.append(
http_cookies.format_set_cookie_header(
i[0],
i[1][0],
i[1][1]
)
)
self.headers["Set-Cookie"] = values
class HTTPFlow(Flow): class HTTPFlow(Flow):
""" """

View File

@ -285,6 +285,17 @@ class TestHTTPResponse:
assert "othercookie" in result assert "othercookie" in result
assert result["othercookie"][0] == ["othervalue", odict.ODict()] assert result["othercookie"][0] == ["othervalue", odict.ODict()]
def test_set_cookies(self):
h = odict.ODictCaseless()
resp = tutils.tresp()
v = resp.get_cookies()
v.add("foo", ["bar", odict.ODictCaseless()])
resp.set_cookies(v)
v = resp.get_cookies()
assert len(v) == 1
assert v["foo"] == [["bar", odict.ODictCaseless()]]
class TestHTTPFlow(object): class TestHTTPFlow(object):