Skip to content

Commit 763844d

Browse files
author
Andrea Ratto
committed
Do not dump streamed response content
1 parent 207ca64 commit 763844d

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

Diff for: requests_toolbelt/utils/dump.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,10 @@ def _dump_response_data(response, prefixes, bytearr):
104104

105105
bytearr.extend(prefix + b'\r\n')
106106

107-
bytearr.extend(response.content)
107+
if not response.raw.closed:
108+
bytearr.extend(b'<< Response body is being streamed >>')
109+
else:
110+
bytearr.extend(response.content)
108111

109112

110113
def _coerce_to_bytes(data):

Diff for: tests/test_dump.py

+21-1
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ class RequestResponseMixin(object):
9898
]
9999

100100
httpresponse_spec = [
101+
'closed',
101102
'headers',
102103
'reason',
103104
'status',
@@ -137,8 +138,9 @@ def configure_request(self, body=b'', headers=None, method=None,
137138
self.request.url = url
138139

139140
def configure_httpresponse(self, headers=None, reason=b'', status=200,
140-
version=HTTP_1_1):
141+
version=HTTP_1_1, closed=True):
141142
"""Helper function to configure a mocked urllib3 response."""
143+
self.httpresponse.closed = closed
142144
self.httpresponse.headers = HTTPHeaderDict(headers or {})
143145
self.httpresponse.reason = reason
144146
self.httpresponse.status = status
@@ -327,6 +329,24 @@ def test_dump_response_data_with_unknown_http_version(self):
327329
assert b'response:HTTP/? 201 OK\r\n' in array
328330
assert b'response:Content-Type: application/json\r\n' in array
329331

332+
def test_dump_response_skips_body_when_streaming(self):
333+
self.configure_response(
334+
url='https://example.com/bigfile',
335+
content=None,
336+
reason=b'OK',
337+
)
338+
339+
array = bytearray()
340+
self.configure_httpresponse(closed=False)
341+
prefixes = dump.PrefixSettings('request:', 'response:')
342+
dump._dump_response_data(
343+
response=self.response,
344+
prefixes=prefixes,
345+
bytearr=array,
346+
)
347+
348+
assert array.endswith(b'<< Response body is being strefamed >>')
349+
330350

331351
class TestResponsePublicFunctions(RequestResponseMixin):
332352

0 commit comments

Comments
 (0)