diff options
author | Maximilian Hils <git@maximilianhils.com> | 2019-11-15 19:04:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-15 19:04:47 +0100 |
commit | 698f7e2e177baf313e6af62ec0f79a26693e430b (patch) | |
tree | 3976db70da1c8f3bb1a38e4db6a3e5c400c6a7fe /test | |
parent | a79e0a0868f68aa0decaf2a67dd563c68cad8da9 (diff) | |
parent | 580ba356adf4e11241725005eb79d47f3468e092 (diff) | |
download | mitmproxy-698f7e2e177baf313e6af62ec0f79a26693e430b.tar.gz mitmproxy-698f7e2e177baf313e6af62ec0f79a26693e430b.tar.bz2 mitmproxy-698f7e2e177baf313e6af62ec0f79a26693e430b.zip |
Merge pull request #3420 from rjt-gupta/multipart-fix
multipart-fix
Diffstat (limited to 'test')
-rw-r--r-- | test/mitmproxy/net/http/test_multipart.py | 37 | ||||
-rw-r--r-- | test/mitmproxy/net/http/test_request.py | 7 |
2 files changed, 41 insertions, 3 deletions
diff --git a/test/mitmproxy/net/http/test_multipart.py b/test/mitmproxy/net/http/test_multipart.py index 68ae6bbd..6d2e5017 100644 --- a/test/mitmproxy/net/http/test_multipart.py +++ b/test/mitmproxy/net/http/test_multipart.py @@ -1,5 +1,6 @@ from mitmproxy.net.http import Headers from mitmproxy.net.http import multipart +import pytest def test_decode(): @@ -22,3 +23,39 @@ def test_decode(): assert len(form) == 2 assert form[0] == (b"field1", b"value1") assert form[1] == (b"field2", b"value2") + + boundary = 'boundary茅莽' + headers = Headers( + content_type='multipart/form-data; boundary=' + boundary + ) + result = multipart.decode(headers, content) + assert result == [] + + headers = Headers( + content_type='' + ) + assert multipart.decode(headers, content) == [] + + +def test_encode(): + data = [("file".encode('utf-8'), "shell.jpg".encode('utf-8')), + ("file_size".encode('utf-8'), "1000".encode('utf-8'))] + headers = Headers( + content_type='multipart/form-data; boundary=127824672498' + ) + content = multipart.encode(headers, data) + + assert b'Content-Disposition: form-data; name="file"' in content + assert b'Content-Type: text/plain; charset=utf-8\r\n\r\nshell.jpg\r\n\r\n--127824672498\r\n' in content + assert b'1000\r\n\r\n--127824672498--\r\n' + assert len(content) == 252 + + with pytest.raises(ValueError, match=r"boundary found in encoded string"): + multipart.encode(headers, [("key".encode('utf-8'), "--127824672498".encode('utf-8'))]) + + boundary = 'boundary茅莽' + headers = Headers( + content_type='multipart/form-data; boundary=' + boundary + ) + result = multipart.encode(headers, data) + assert result == b'' diff --git a/test/mitmproxy/net/http/test_request.py b/test/mitmproxy/net/http/test_request.py index ef581a91..71d5c7a1 100644 --- a/test/mitmproxy/net/http/test_request.py +++ b/test/mitmproxy/net/http/test_request.py @@ -371,6 +371,7 @@ class TestRequestUtils: assert list(request.multipart_form.items()) == [] def test_set_multipart_form(self): - request = treq(content=b"foobar") - with pytest.raises(NotImplementedError): - request.multipart_form = "foobar" + request = treq() + request.multipart_form = [("file", "shell.jpg"), ("file_size", "1000")] + assert request.headers["Content-Type"] == 'multipart/form-data' + assert request.content is None |