* Add reproducible test example for empty multipart
* Possible fix for empty combination of files/data
* Return bytestream with empty data/files
* Remove content-length in test
Co-authored-by: florimondmanca <florimond.manca@gmail.com>
Handles encoding the given `data`, `files`, and `json`, returning
a `ContentStream` implementation.
"""
- if data is None:
+ if not data:
if json is not None:
return JSONStream(json=json)
elif files:
else:
return ByteStream(body=b"")
elif isinstance(data, dict):
- if files is not None:
+ if files:
return MultipartStream(data=data, files=files, boundary=boundary)
else:
return URLEncodedStream(data=data)
)
+@pytest.mark.asyncio
+async def test_empty_request():
+ stream = encode(data={}, files={})
+ sync_content = b"".join([part for part in stream])
+ async_content = b"".join([part async for part in stream])
+
+ assert stream.can_replay()
+ assert stream.get_headers() == {}
+ assert sync_content == b""
+ assert async_content == b""
+
+
def test_invalid_argument():
with pytest.raises(TypeError):
encode(123)