mirror of
https://github.com/kennethreitz/requests.git
synced 2026-06-05 22:50:18 +00:00
Merge pull request #1635 from daftshady/dev
Fixed #1630 and added test case.
This commit is contained in:
+2
-1
@@ -135,4 +135,5 @@ Patches and Suggestions
|
||||
- David Pursehouse <david.pursehouse@gmail.com> @dpursehouse
|
||||
- Jon Parise
|
||||
- Alexander Karpinsky @homm86
|
||||
- Marc Schlaich @schlamar
|
||||
- Marc Schlaich @schlamar
|
||||
- Park Ilsu <daftonshady@gmail.com> @daftshady
|
||||
|
||||
+8
-2
@@ -392,15 +392,21 @@ def morsel_to_cookie(morsel):
|
||||
return c
|
||||
|
||||
|
||||
def cookiejar_from_dict(cookie_dict, cookiejar=None):
|
||||
def cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True):
|
||||
"""Returns a CookieJar from a key/value dictionary.
|
||||
|
||||
:param cookie_dict: Dict of key/values to insert into CookieJar.
|
||||
:param cookiejar: (optional) A cookiejar to add the cookies to.
|
||||
:param overwrite: (optional) If False, will not replace cookies
|
||||
already in the jar with new ones.
|
||||
"""
|
||||
if cookiejar is None:
|
||||
cookiejar = RequestsCookieJar()
|
||||
|
||||
if cookie_dict is not None:
|
||||
names_from_jar = [cookie.name for cookie in cookiejar]
|
||||
for name in cookie_dict:
|
||||
cookiejar.set_cookie(create_cookie(name, cookie_dict[name]))
|
||||
if overwrite or (name not in names_from_jar):
|
||||
cookiejar.set_cookie(create_cookie(name, cookie_dict[name]))
|
||||
|
||||
return cookiejar
|
||||
|
||||
+1
-1
@@ -298,7 +298,7 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin):
|
||||
p = PreparedRequest()
|
||||
p.method = self.method
|
||||
p.url = self.url
|
||||
p.headers = self.headers
|
||||
p.headers = self.headers.copy()
|
||||
p.body = self.body
|
||||
p.hooks = self.hooks
|
||||
return p
|
||||
|
||||
@@ -323,6 +323,9 @@ class Session(SessionRedirectMixin):
|
||||
)
|
||||
prep = self.prepare_request(req)
|
||||
|
||||
# Add param cookies to session cookies
|
||||
self.cookies = cookiejar_from_dict(cookies, cookiejar=self.cookies, overwrite=False)
|
||||
|
||||
proxies = proxies or {}
|
||||
|
||||
# Gather clues from the surrounding environment.
|
||||
|
||||
@@ -164,6 +164,12 @@ class RequestsTestCase(unittest.TestCase):
|
||||
s.get(httpbin('cookies/set?foo="bar:baz"'))
|
||||
self.assertTrue(s.cookies['foo'] == '"bar:baz"')
|
||||
|
||||
def test_cookie_persists_via_api(self):
|
||||
s = requests.session()
|
||||
r = s.get(httpbin('redirect/1'), cookies={'foo':'bar'})
|
||||
self.assertTrue('foo' in r.request.headers['Cookie'])
|
||||
self.assertTrue('foo' in r.history[0].request.headers['Cookie'])
|
||||
|
||||
def test_request_cookie_overrides_session_cookie(self):
|
||||
s = requests.session()
|
||||
s.cookies['foo'] = 'bar'
|
||||
|
||||
Reference in New Issue
Block a user