From 8c4d4f1af3a501ae0beec5e270f3206cda5c4842 Mon Sep 17 00:00:00 2001 From: Ian Cordasco Date: Tue, 2 Jun 2015 14:02:46 -0500 Subject: [PATCH] Move handling of method to PreparedRequest --- requests/models.py | 7 ++++--- test_requests.py | 10 ++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/requests/models.py b/requests/models.py index 180d448d..ac99822f 100644 --- a/requests/models.py +++ b/requests/models.py @@ -230,7 +230,7 @@ class Request(RequestHooksMixin): for (k, v) in list(hooks.items()): self.register_hook(event=k, hook=v) - self.method = to_native_string(method) + self.method = method self.url = url self.headers = headers self.files = files @@ -328,8 +328,9 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): def prepare_method(self, method): """Prepares the given HTTP method.""" self.method = method - if self.method is not None: - self.method = self.method.upper() + if self.method is None: + raise ValueError('Request method cannot be "None"') + self.method = to_native_string(self.method).upper() def prepare_url(self, url, params): """Prepares the given HTTP URL.""" diff --git a/test_requests.py b/test_requests.py index 81a661f5..e8b64b4c 100755 --- a/test_requests.py +++ b/test_requests.py @@ -1617,6 +1617,16 @@ def test_prepare_unicode_url(): assert_copy(p, p.copy()) +def test_prepare_requires_a_request_method(): + req = Request() + with pytest.raises(ValueError): + req.prepare() + + prepped = PreparedRequest() + with pytest.raises(ValueError): + prepped.prepare() + + def test_urllib3_retries(): from requests.packages.urllib3.util import Retry s = requests.Session()