Fixed #1630, added test case for cookie persistence.
authordaftshady <daftonshady@gmail.com>
Sat, 28 Sep 2013 07:33:05 +0000 (16:33 +0900)
committerdaftshady <daftonshady@gmail.com>
Sat, 28 Sep 2013 07:33:05 +0000 (16:33 +0900)
requests/sessions.py
test_requests.py

index aa956d3f3ff0506430e4bf100028bb7cee3e7745..a7e6d4e7b85065b866bca1ef703f1e39011a25b1 100644 (file)
@@ -146,6 +146,13 @@ class SessionRedirectMixin(object):
 
             extract_cookies_to_jar(self.cookies, prepared_request, resp.raw)
 
+            # Restore original cookies in redirects response.
+            headers = resp.request.headers
+            try:
+                headers['Cookie'] = req.headers['Cookie']
+            except KeyError:
+                pass
+
             i += 1
             yield resp
 
index d1e6ed0a4f091c4cbe3ffd665af343f61ab25005..3d6665bad0a61860862414b507a3dcc442664b0a 100755 (executable)
@@ -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'