aboutsummaryrefslogtreecommitdiff
path: root/dev-python/multipart/files/multipart-urlencoded-test.patch
blob: e47f692c78df3b1a90bfaee9d50eaa3c3b482e73 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
From 4d4ac6b79c453918ebf40c690e8d57d982ee840b Mon Sep 17 00:00:00 2001
From: Colin Watson <cjwatson@debian.org>
Date: Fri, 9 Apr 2021 16:54:49 +0100
Subject: [PATCH] Don't test semicolon separators in urlencoded data

Python no longer accepts ";" as a separator for `urllib.parse.parse_qs`
by default (https://bugs.python.org/issue42967), causing the multipart
test suite to fail with recent Python versions (3.6.13, 3.7.10, 3.8.8,
3.9.2, 3.10.0a6).

While we could detect the availability of the `separator` argument and
pass it, since `application/x-www-form-urlencoded` data in `POST` and
`PUT` requests is probably not an issue for web cache poisoning, the
current HTML spec seems clear that only "&" should be considered, so
follow along with Python's API change.
---
 test/test_multipart.py | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/test/test_multipart.py b/test/test_multipart.py
index 38c69d1..6fe864f 100644
--- a/test/test_multipart.py
+++ b/test/test_multipart.py
@@ -233,10 +233,9 @@ def test_empty(self):
     def test_urlencoded(self):
         for ctype in ('application/x-www-form-urlencoded', 'application/x-url-encoded'):
             self.env['CONTENT_TYPE'] = ctype
-            forms, files = self.parse('a=b&c=d;e=f')
+            forms, files = self.parse('a=b&c=d')
             self.assertEqual(forms['a'], 'b')
             self.assertEqual(forms['c'], 'd')
-            self.assertEqual(forms['e'], 'f')
 
     def test_urlencoded_latin1(self):
         for ctype in ('application/x-www-form-urlencoded', 'application/x-url-encoded'):