diff options
| author | Jon Dufresne <jon.dufresne@gmail.com> | 2018-12-27 11:19:55 -0500 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2018-12-27 11:19:55 -0500 |
| commit | 6fe9c45b725cd21eacbb50263bd3449e1a3edf17 (patch) | |
| tree | 76c94d830c0c1e17d1d7580743908eb0aacc134e /tests/utils_tests/test_http.py | |
| parent | 293db9eb36e42e8ba976c2639800020d04b95deb (diff) | |
Fixed #30024 -- Made urlencode() and Client raise TypeError when None is passed as data.
Diffstat (limited to 'tests/utils_tests/test_http.py')
| -rw-r--r-- | tests/utils_tests/test_http.py | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/tests/utils_tests/test_http.py b/tests/utils_tests/test_http.py index 93f45fb936..aca825ef1f 100644 --- a/tests/utils_tests/test_http.py +++ b/tests/utils_tests/test_http.py @@ -12,7 +12,12 @@ from django.utils.http import ( ) -class URLEncodeTests(unittest.TestCase): +class URLEncodeTests(SimpleTestCase): + cannot_encode_none_msg = ( + 'Cannot encode None in a query string. Did you mean to pass an ' + 'empty string or omit the value?' + ) + def test_tuples(self): self.assertEqual(urlencode((('a', 1), ('b', 2), ('c', 3))), 'a=1&b=2&c=3') @@ -65,6 +70,20 @@ class URLEncodeTests(unittest.TestCase): self.assertEqual(urlencode({'a': gen()}, doseq=True), 'a=0&a=1') self.assertEqual(urlencode({'a': gen()}, doseq=False), 'a=%5B%270%27%2C+%271%27%5D') + def test_none(self): + with self.assertRaisesMessage(TypeError, self.cannot_encode_none_msg): + urlencode({'a': None}) + + def test_none_in_sequence(self): + with self.assertRaisesMessage(TypeError, self.cannot_encode_none_msg): + urlencode({'a': [None]}, doseq=True) + + def test_none_in_generator(self): + def gen(): + yield None + with self.assertRaisesMessage(TypeError, self.cannot_encode_none_msg): + urlencode({'a': gen()}, doseq=True) + class Base36IntTests(SimpleTestCase): def test_roundtrip(self): |
