diff options
Diffstat (limited to 'tests/utils_tests/test_http.py')
| -rw-r--r-- | tests/utils_tests/test_http.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/utils_tests/test_http.py b/tests/utils_tests/test_http.py index 67f3361068..2ba617dfc9 100644 --- a/tests/utils_tests/test_http.py +++ b/tests/utils_tests/test_http.py @@ -12,6 +12,7 @@ from django.utils.http import ( int_to_base36, is_same_domain, parse_etags, + parse_header_parameters, parse_http_date, quote_etag, url_has_allowed_host_and_scheme, @@ -435,3 +436,39 @@ class EscapeLeadingSlashesTests(unittest.TestCase): for url, expected in tests: with self.subTest(url=url): self.assertEqual(escape_leading_slashes(url), expected) + + +class ParseHeaderParameterTests(unittest.TestCase): + def test_basic(self): + tests = [ + ("text/plain", ("text/plain", {})), + ("text/vnd.just.made.this.up ; ", ("text/vnd.just.made.this.up", {})), + ("text/plain;charset=us-ascii", ("text/plain", {"charset": "us-ascii"})), + ( + 'text/plain ; charset="us-ascii"', + ("text/plain", {"charset": "us-ascii"}), + ), + ( + 'text/plain ; charset="us-ascii"; another=opt', + ("text/plain", {"charset": "us-ascii", "another": "opt"}), + ), + ( + 'attachment; filename="silly.txt"', + ("attachment", {"filename": "silly.txt"}), + ), + ( + 'attachment; filename="strange;name"', + ("attachment", {"filename": "strange;name"}), + ), + ( + 'attachment; filename="strange;name";size=123;', + ("attachment", {"filename": "strange;name", "size": "123"}), + ), + ( + 'form-data; name="files"; filename="fo\\"o;bar"', + ("form-data", {"name": "files", "filename": 'fo"o;bar'}), + ), + ] + for header, expected in tests: + with self.subTest(header=header): + self.assertEqual(parse_header_parameters(header), expected) |
