From f8dcf0e13e8e3e0873f1fe12e94adb4e1ca5641e Mon Sep 17 00:00:00 2001 From: tboy1337 Date: Tue, 21 Oct 2025 14:24:54 +0100 Subject: [PATCH 1/2] Fix handling of None method in prepare_request to default to "GET" and add corresponding test case. --- src/requests/sessions.py | 2 +- tests/test_requests.py | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/requests/sessions.py b/src/requests/sessions.py index 731550de88..93a9f09929 100644 --- a/src/requests/sessions.py +++ b/src/requests/sessions.py @@ -482,7 +482,7 @@ def prepare_request(self, request): p = PreparedRequest() p.prepare( - method=request.method.upper(), + method=(request.method or "GET").upper(), url=request.url, files=request.files, data=request.data, diff --git a/tests/test_requests.py b/tests/test_requests.py index 75d2deff2e..5d407779a1 100644 --- a/tests/test_requests.py +++ b/tests/test_requests.py @@ -1225,6 +1225,25 @@ def test_prepare_request_with_bytestring_url(self): prep = s.prepare_request(req) assert prep.url == "https://httpbin.org/" + def test_prepare_request_with_none_method(self): + """Test that prepare_request handles None method correctly. + + This test verifies Bug #008 fix: When Request.method is None, + prepare_request() should default to "GET" instead of crashing. + """ + # Create a Request without specifying method (defaults to None) + req = requests.Request(url="https://httpbin.org/") + assert req.method is None + + s = requests.Session() + + # After the fix, this should work and default to GET + prep = s.prepare_request(req) + + # Verify the method defaults to GET + assert prep.method == "GET" + assert prep.url == "https://httpbin.org/" + def test_request_with_bytestring_host(self, httpbin): s = requests.Session() resp = s.request( From e5e7216b2e36ef5ee26df45814091a7b8166d078 Mon Sep 17 00:00:00 2001 From: tboy1337 Date: Thu, 23 Oct 2025 09:27:40 +0100 Subject: [PATCH 2/2] Update test description for handling None method in prepare_request to clarify expected behavior. --- tests/test_requests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_requests.py b/tests/test_requests.py index 5d407779a1..9b4c411c8f 100644 --- a/tests/test_requests.py +++ b/tests/test_requests.py @@ -1228,7 +1228,7 @@ def test_prepare_request_with_bytestring_url(self): def test_prepare_request_with_none_method(self): """Test that prepare_request handles None method correctly. - This test verifies Bug #008 fix: When Request.method is None, + When Request.method is None, prepare_request() should default to "GET" instead of crashing. """ # Create a Request without specifying method (defaults to None)