aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authormame82 <mame8282@googlemail.com>2017-02-16 15:03:27 +0100
committerMaximilian Hils <git@maximilianhils.com>2017-02-16 15:03:27 +0100
commitffdbccd5719d9d5a51cbeb61b3516390d9384f78 (patch)
tree73f1e328c99384a0a9444803853087a8d6901f17 /test
parent337b1c9399e525a23dc188ef5df1667f109b108e (diff)
downloadmitmproxy-ffdbccd5719d9d5a51cbeb61b3516390d9384f78.tar.gz
mitmproxy-ffdbccd5719d9d5a51cbeb61b3516390d9384f78.tar.bz2
mitmproxy-ffdbccd5719d9d5a51cbeb61b3516390d9384f78.zip
Use existing urlencoding conventions when re-encoding edited form #1946 (#2022)
Diffstat (limited to 'test')
-rw-r--r--test/mitmproxy/net/http/test_url.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/test/mitmproxy/net/http/test_url.py b/test/mitmproxy/net/http/test_url.py
index 11ab1b81..2064aab8 100644
--- a/test/mitmproxy/net/http/test_url.py
+++ b/test/mitmproxy/net/http/test_url.py
@@ -85,6 +85,26 @@ surrogates_quoted = (
)
+def test_empty_key_trailing_equal_sign():
+ """
+ Some HTTP clients don't send trailing equal signs for parameters without assigned value, e.g. they send
+ foo=bar&baz&qux=quux
+ instead of
+ foo=bar&baz=&qux=quux
+ The respective behavior of encode() should be driven by a reference string given in similar_to parameter
+ """
+ reference_without_equal = "key1=val1&key2&key3=val3"
+ reference_with_equal = "key1=val1&key2=&key3=val3"
+
+ post_data_empty_key_middle = [('one', 'two'), ('emptykey', ''), ('three', 'four')]
+ post_data_empty_key_end = [('one', 'two'), ('three', 'four'), ('emptykey', '')]
+
+ assert url.encode(post_data_empty_key_middle, similar_to = reference_with_equal) == "one=two&emptykey=&three=four"
+ assert url.encode(post_data_empty_key_end, similar_to = reference_with_equal) == "one=two&three=four&emptykey="
+ assert url.encode(post_data_empty_key_middle, similar_to = reference_without_equal) == "one=two&emptykey&three=four"
+ assert url.encode(post_data_empty_key_end, similar_to = reference_without_equal) == "one=two&three=four&emptykey"
+
+
def test_encode():
assert url.encode([('foo', 'bar')])
assert url.encode([('foo', surrogates)])