class TestMultipartEncoder(unittest.TestCase): def setUp(self): self.parts = [('field', 'value'), ('other_field', 'other_value')] self.boundary = 'this-is-a-boundary' self.instance = MultipartEncoder(self.parts, boundary=self.boundary) def test_to_string(self): assert self.instance.to_string() == ( '--this-is-a-boundary\r\n' 'Content-Disposition: form-data; name="field"\r\n\r\n' 'value\r\n' '--this-is-a-boundary\r\n' 'Content-Disposition: form-data; name="other_field"\r\n\r\n' 'other_value\r\n' '--this-is-a-boundary--\r\n' ).encode() def test_content_type(self): expected = 'multipart/form-data; boundary=this-is-a-boundary' assert self.instance.content_type == expected def test_encodes_data_the_same(self): assert self.instance.to_string() == self.instance.read() def test_streams_its_data(self): large_file = LargeFileMock() parts = {'some field': 'value', 'some file': large_file, } encoder = MultipartEncoder(parts) read_size = 1024 * 1024 * 128 while True: read = encoder.read(read_size) if not read: break assert encoder._buffer.tell() <= read_size def test_length_is_correct(self): assert len(self.instance.to_string()) == len(self.instance) def test_encodes_with_readable_data(self): s = io.BytesIO(b'value') m = MultipartEncoder([('field', s)], boundary=self.boundary) assert m.read() == ( '--this-is-a-boundary\r\n' 'Content-Disposition: form-data; name="field"\r\n\r\n' 'value\r\n' '--this-is-a-boundary--\r\n' ).encode()
class TestMultipartEncoder(unittest.TestCase): def setUp(self): self.parts = [('field', 'value'), ('other_field', 'other_value')] self.boundary = 'this-is-a-boundary' self.instance = MultipartEncoder(self.parts, boundary=self.boundary) def test_to_string(self): assert self.instance.to_string() == ( '--this-is-a-boundary\r\n' 'Content-Disposition: form-data; name="field"\r\n\r\n' 'value\r\n' '--this-is-a-boundary\r\n' 'Content-Disposition: form-data; name="other_field"\r\n\r\n' 'other_value\r\n' '--this-is-a-boundary--\r\n' ) def test_content_type(self): expected = 'multipart/form-data; boundary=this-is-a-boundary' assert self.instance.content_type == expected def test_encodes_data_the_same(self): assert self.instance.to_string() == self.instance.read()