Guard against users sending unprepared requests.
authorCory Benfield <lukasaoz@gmail.com>
Wed, 6 Feb 2013 18:48:47 +0000 (18:48 +0000)
committerCory Benfield <lukasaoz@gmail.com>
Sun, 10 Feb 2013 06:13:02 +0000 (06:13 +0000)
requests/sessions.py
test_requests.py

index 411d1bb..9dff255 100644 (file)
@@ -365,6 +365,11 @@ class Session(SessionRedirectMixin):
 
     def send(self, request, **kwargs):
         """Send a given PreparedRequest."""
+        # It's possible that users might accidentally send a Request object.
+        # Guard against that specific failure case.
+        if getattr(request, 'prepare', None):
+            raise ValueError('You can only send PreparedRequests.')
+
         # Set up variables needed for resolve_redirects and dispatching of
         # hooks
         allow_redirects = kwargs.pop('allow_redirects', True)
index 4ba9a43..0355a4a 100644 (file)
@@ -341,5 +341,9 @@ class RequestsTestCase(unittest.TestCase):
         self.assertEqual(('user', 'pass'),
                          requests.utils.get_auth_from_url(url))
 
+    def test_cannot_send_unprepared_requests(self):
+        r = requests.Request(url=HTTPBIN)
+        self.assertRaises(ValueError, requests.Session().send, r)
+
 if __name__ == '__main__':
     unittest.main()