def test_encode_query_string_uuid(self): obj = {'a': UUID('7da81f83-a656-42f1-aeb3-ab207809fb0e')} query_string = 'a=7da81f83-a656-42f1-aeb3-ab207809fb0e' self.assertEqual(encode_query_string(obj), query_string)
def test_encode_query_string_null(self): obj = {'a': None} query_string = 'a=null' self.assertEqual(encode_query_string(obj), query_string)
def test_encode_query_string_datetime(self): # pylint: disable=invalid-name obj = {'a': datetime(2013, 7, 18, 12, 31, tzinfo=TZUTC)} query_string = 'a=2013-07-18T12%3A31%3A00%2B00%3A00' self.assertEqual(encode_query_string(obj), query_string)
def test_encode_query_string_date(self): obj = {'a': date(2013, 7, 18)} query_string = 'a=2013-07-18' self.assertEqual(encode_query_string(obj), query_string)
def test_encode_query_string_bool(self): obj = {'a': True} query_string = 'a=true' self.assertEqual(encode_query_string(obj), query_string)
def test_encode_query_string(self): # Complex dict obj = {'a': 7, '_a': '7', 'b': {'c': '+x y + z', 'd': [2, -4, 6]}} query_string = '_a=7&a=7&b.c=%2Bx%20y%20%2B%20z&b.d.0=2&b.d.1=-4&b.d.2=6' self.assertEqual(encode_query_string(obj), query_string) # List of dicts obj = {'foo': [{'bar': '17', 'thud': 'blue'}, {'boo': 'bear'}]} query_string = 'foo.0.bar=17&foo.0.thud=blue&foo.1.boo=bear' self.assertEqual(encode_query_string(obj), query_string) # Top-level array obj = [1, 2, 3] # pylint: disable=redefined-variable-type query_string = '0=1&1=2&2=3' self.assertEqual(encode_query_string(obj), query_string) # Empty dict obj = {} query_string = '' self.assertEqual(encode_query_string(obj), query_string) # Empty array obj = [] query_string = '' self.assertEqual(encode_query_string(obj), query_string) # Empty dict/dict obj = {'foo': {}} query_string = 'foo=' self.assertEqual(encode_query_string(obj), query_string) # Empty dict/array obj = {'foo': []} query_string = 'foo=' self.assertEqual(encode_query_string(obj), query_string) # Empty array/array obj = [[]] query_string = '0=' self.assertEqual(encode_query_string(obj), query_string) # Empty array/dict obj = [{}] query_string = '0=' self.assertEqual(encode_query_string(obj), query_string) # Keys and values with special characters obj = {'a&b=c.d': 'a&b=c.d'} query_string = 'a%26b%3Dc.d=a%26b%3Dc.d' self.assertEqual(encode_query_string(obj), query_string) # Unicode keys and values obj = {'a': 'abc' + chr(40960), 'b': ['c', 'd']} query_string = 'a=abc%EA%80%80&b.0=c&b.1=d' self.assertEqual(encode_query_string(obj), query_string)
def test_encode_query_string_datetime_naive(self): # pylint: disable=invalid-name obj = {'a': datetime(2013, 7, 18, 12, 31)} query_string = 'a=' + quote(obj['a'].replace(tzinfo=TZLOCAL).isoformat(), encoding='utf-8') self.assertEqual(encode_query_string(obj), query_string)