From b0657cf163b2ed3781896eb1712a8ae1b14125ab Mon Sep 17 00:00:00 2001 From: Cory Benfield Date: Wed, 6 Feb 2013 18:48:47 +0000 Subject: [PATCH] Guard against users sending unprepared requests. --- requests/sessions.py | 5 +++++ test_requests.py | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/requests/sessions.py b/requests/sessions.py index 411d1bb..9dff255 100644 --- a/requests/sessions.py +++ b/requests/sessions.py @@ -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) diff --git a/test_requests.py b/test_requests.py index 4ba9a43..0355a4a 100644 --- a/test_requests.py +++ b/test_requests.py @@ -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() -- 2.7.4