test for #458
authorShivaram Lingamneni <slingamn@cs.stanford.edu>
Fri, 4 May 2012 04:16:46 +0000 (21:16 -0700)
committerShivaram Lingamneni <slingamn@cs.stanford.edu>
Fri, 4 May 2012 04:16:46 +0000 (21:16 -0700)
tests/test_requests.py

index db176f512c0420fc42d1685586786d615568f3ad..a7019395763a52e0e883a11dd56f8e01f14c400b 100755 (executable)
@@ -848,14 +848,28 @@ class RequestsTestSuite(TestSetup, TestBaseMixin, unittest.TestCase):
         r.text
 
     def test_max_redirects(self):
+        """Test the max_redirects config variable, normally and under safe_mode."""
         def unsafe_callable():
-            requests.get("http://httpbin.org/redirect/3", config=dict(max_redirects=2))
+            requests.get(httpbin('redirect', '3'), config=dict(max_redirects=2))
         self.assertRaises(requests.exceptions.TooManyRedirects, unsafe_callable)
 
         # add safe mode
-        response = requests.get("http://httpbin.org/redirect/3", config=dict(safe_mode=True, max_redirects=2))
+        response = requests.get(httpbin('redirect', '3'), config=dict(safe_mode=True, max_redirects=2))
         self.assertTrue(response.content is None)
         self.assertTrue(isinstance(response.error, requests.exceptions.TooManyRedirects))
 
+    def test_connection_keepalive_and_close(self):
+        """Test that we send 'Connection: close' when keep_alive is disabled."""
+        # keep-alive should be on by default
+        r1 = requests.get(httpbin('get'))
+        # XXX due to proxying issues, test the header sent back by httpbin, rather than
+        # the header reported in its message body. See kennethreitz/httpbin#46
+        self.assertEqual(r1.headers['Connection'].lower(), 'keep-alive')
+
+        # but when we disable it, we should send a 'Connection: close'
+        # and get the same back:
+        r2 = requests.get(httpbin('get'), config=dict(keep_alive=False))
+        self.assertEqual(r2.headers['Connection'].lower(), 'close')
+
 if __name__ == '__main__':
     unittest.main()