()
| 12 | |
| 13 | |
| 14 | def test_decoder_simple() -> None: |
| 15 | boundary = b"---------------------------9704338192090380615194531385$" |
| 16 | decoder = MultipartDecoder(boundary) |
| 17 | data = """ |
| 18 | -----------------------------9704338192090380615194531385$ |
| 19 | Content-Disposition: form-data; name="fname" |
| 20 | |
| 21 | ß∑œß∂ƒå∂ |
| 22 | -----------------------------9704338192090380615194531385$ |
| 23 | Content-Disposition: form-data; name="lname"; filename="bob" |
| 24 | |
| 25 | asdasd |
| 26 | -----------------------------9704338192090380615194531385$-- |
| 27 | """.replace("\n", "\r\n").encode() |
| 28 | decoder.receive_data(data) |
| 29 | decoder.receive_data(None) |
| 30 | events = [decoder.next_event()] |
| 31 | while not isinstance(events[-1], Epilogue): |
| 32 | events.append(decoder.next_event()) |
| 33 | assert events == [ |
| 34 | Preamble(data=b""), |
| 35 | Field( |
| 36 | name="fname", |
| 37 | headers=Headers([("Content-Disposition", 'form-data; name="fname"')]), |
| 38 | ), |
| 39 | Data(data="ß∑œß∂ƒå∂".encode(), more_data=False), |
| 40 | File( |
| 41 | name="lname", |
| 42 | filename="bob", |
| 43 | headers=Headers( |
| 44 | [("Content-Disposition", 'form-data; name="lname"; filename="bob"')] |
| 45 | ), |
| 46 | ), |
| 47 | Data(data=b"asdasd", more_data=False), |
| 48 | Epilogue(data=b" "), |
| 49 | ] |
| 50 | encoder = MultipartEncoder(boundary) |
| 51 | result = b"" |
| 52 | for event in events: |
| 53 | result += encoder.send_event(event) |
| 54 | assert data == result |
| 55 | |
| 56 | |
| 57 | @pytest.mark.parametrize( |
nothing calls this directly
no test coverage detected