summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/regressiontests/utils/http.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/regressiontests/utils/http.py b/tests/regressiontests/utils/http.py
index 83a4a7f54d..3f3a36cef7 100644
--- a/tests/regressiontests/utils/http.py
+++ b/tests/regressiontests/utils/http.py
@@ -1,5 +1,6 @@
from django.utils import http
from django.utils import unittest
+from django.utils.datastructures import MultiValueDict
class TestUtilsHttp(unittest.TestCase):
@@ -21,3 +22,32 @@ class TestUtilsHttp(unittest.TestCase):
self.assertFalse(http.same_origin('http://foo.com', 'http://foo.com.evil.com'))
# Different port
self.assertFalse(http.same_origin('http://foo.com:8000', 'http://foo.com:8001'))
+
+ def test_urlencode(self):
+ # 2-tuples (the norm)
+ result = http.urlencode((('a', 1), ('b', 2), ('c', 3)))
+ self.assertEqual(result, 'a=1&b=2&c=3')
+ # A dictionary
+ result = http.urlencode({ 'a': 1, 'b': 2, 'c': 3})
+ acceptable_results = [
+ # Need to allow all of these as dictionaries have to be treated as
+ # unordered
+ 'a=1&b=2&c=3',
+ 'a=1&c=3&b=2',
+ 'b=2&a=1&c=3',
+ 'b=2&c=3&a=1',
+ 'c=3&a=1&b=2',
+ 'c=3&b=2&a=1'
+ ]
+ self.assertTrue(result in acceptable_results)
+ # A MultiValueDict
+ result = http.urlencode(MultiValueDict({
+ 'name': ['Adrian', 'Simon'],
+ 'position': ['Developer']
+ }), doseq=True)
+ acceptable_results = [
+ # MultiValueDicts are similarly unordered
+ 'name=Adrian&name=Simon&position=Developer',
+ 'position=Developer&name=Adrian&name=Simon'
+ ]
+ self.assertTrue(result in acceptable_results)