@@ -32,6 +32,11 @@ class _LowercaseMethodRequest:
3232 url = "https://example.com/lowercase"
3333
3434
35+ class _TooLongMethodRequest :
36+ method = "A" * 51
37+ url = "https://example.com/too-long-method"
38+
39+
3540class _InvalidMethodTokenRequest :
3641 method = "GET /invalid"
3742 url = "https://example.com/invalid-method"
@@ -72,6 +77,12 @@ def request(self): # type: ignore[override]
7277 return _LowercaseMethodRequest ()
7378
7479
80+ class _RequestErrorWithTooLongMethod (httpx .RequestError ):
81+ @property
82+ def request (self ): # type: ignore[override]
83+ return _TooLongMethodRequest ()
84+
85+
7586class _RequestErrorWithInvalidMethodToken (httpx .RequestError ):
7687 @property
7788 def request (self ): # type: ignore[override]
@@ -145,6 +156,15 @@ def test_extract_request_error_context_normalizes_method_to_uppercase():
145156 assert url == "https://example.com/lowercase"
146157
147158
159+ def test_extract_request_error_context_rejects_overlong_methods ():
160+ method , url = extract_request_error_context (
161+ _RequestErrorWithTooLongMethod ("network down" )
162+ )
163+
164+ assert method == "UNKNOWN"
165+ assert url == "https://example.com/too-long-method"
166+
167+
148168def test_extract_request_error_context_rejects_invalid_method_tokens ():
149169 method , url = extract_request_error_context (
150170 _RequestErrorWithInvalidMethodToken ("network down" )
@@ -204,6 +224,16 @@ def test_format_request_failure_message_normalizes_lowercase_fallback_method():
204224 assert message == "Request POST https://example.com/fallback failed"
205225
206226
227+ def test_format_request_failure_message_rejects_overlong_fallback_methods ():
228+ message = format_request_failure_message (
229+ httpx .RequestError ("network down" ),
230+ fallback_method = "A" * 51 ,
231+ fallback_url = "https://example.com/fallback" ,
232+ )
233+
234+ assert message == "Request UNKNOWN https://example.com/fallback failed"
235+
236+
207237def test_format_request_failure_message_truncates_very_long_fallback_urls ():
208238 very_long_url = "https://example.com/" + ("a" * 1200 )
209239 message = format_request_failure_message (
0 commit comments