Changeset 391 for python/trunk/Lib/test/test_cgi.py
- Timestamp:
- Mar 19, 2014, 11:31:01 PM (11 years ago)
- Location:
- python/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
python/trunk
-
Property svn:mergeinfo
set to
/python/vendor/Python-2.7.6 merged eligible /python/vendor/current merged eligible
-
Property svn:mergeinfo
set to
-
python/trunk/Lib/test/test_cgi.py
r2 r391 1 from test.test_support import run_unittest 1 from test.test_support import run_unittest, check_warnings 2 2 import cgi 3 3 import os … … 5 5 import tempfile 6 6 import unittest 7 from StringIO import StringIO8 7 9 8 class HackedSysModule: … … 103 102 ] 104 103 105 def norm(list):106 if type(list) == type([]):107 list.sort()108 return list109 110 104 def first_elts(list): 111 105 return map(lambda x:x[0], list) … … 121 115 result = {} 122 116 for k, v in dict(form).items(): 123 result[k] = type(v) is listand form.getlist(k) or v.value117 result[k] = isinstance(v, list) and form.getlist(k) or v.value 124 118 125 119 return result 126 120 127 121 class CgiTests(unittest.TestCase): 122 123 def test_escape(self): 124 self.assertEqual("test & string", cgi.escape("test & string")) 125 self.assertEqual("<test string>", cgi.escape("<test string>")) 126 self.assertEqual(""test string"", cgi.escape('"test string"', True)) 128 127 129 128 def test_strict(self): … … 139 138 sd = cgi.SvFormContentDict(env) 140 139 fs = cgi.FieldStorage(environ=env) 141 if type(expect) == type({}):140 if isinstance(expect, dict): 142 141 # test dict interface 143 142 self.assertEqual(len(expect), len(fcd)) 144 self.assert Equal(norm(expect.keys()), norm(fcd.keys()))145 self.assert Equal(norm(expect.values()), norm(fcd.values()))146 self.assert Equal(norm(expect.items()), norm(fcd.items()))143 self.assertItemsEqual(expect.keys(), fcd.keys()) 144 self.assertItemsEqual(expect.values(), fcd.values()) 145 self.assertItemsEqual(expect.items(), fcd.items()) 147 146 self.assertEqual(fcd.get("nonexistent field", "default"), "default") 148 147 self.assertEqual(len(sd), len(fs)) 149 self.assert Equal(norm(sd.keys()), norm(fs.keys()))148 self.assertItemsEqual(sd.keys(), fs.keys()) 150 149 self.assertEqual(fs.getvalue("nonexistent field", "default"), "default") 151 150 # test individual fields 152 151 for key in expect.keys(): 153 152 expect_val = expect[key] 154 self.assert _(fcd.has_key(key))155 self.assert Equal(norm(fcd[key]), norm(expect[key]))153 self.assertTrue(fcd.has_key(key)) 154 self.assertItemsEqual(fcd[key], expect[key]) 156 155 self.assertEqual(fcd.get(key, "default"), fcd[key]) 157 self.assert _(fs.has_key(key))156 self.assertTrue(fs.has_key(key)) 158 157 if len(expect_val) > 1: 159 158 single_value = 0 … … 163 162 val = sd[key] 164 163 except IndexError: 165 self. failIf(single_value)164 self.assertFalse(single_value) 166 165 self.assertEqual(fs.getvalue(key), expect_val) 167 166 else: 168 self.assert _(single_value)167 self.assertTrue(single_value) 169 168 self.assertEqual(val, expect_val[0]) 170 169 self.assertEqual(fs.getvalue(key), expect_val[0]) 171 self.assert Equal(norm(sd.getlist(key)), norm(expect_val))170 self.assertItemsEqual(sd.getlist(key), expect_val) 172 171 if single_value: 173 self.assert Equal(norm(sd.values()),174 first_elts(norm(expect.values())))175 self.assert Equal(norm(sd.items()),176 first_second_elts(norm(expect.items())))172 self.assertItemsEqual(sd.values(), 173 first_elts(expect.values())) 174 self.assertItemsEqual(sd.items(), 175 first_second_elts(expect.items())) 177 176 178 177 def test_weird_formcontentdict(self): … … 185 184 for k, v in d.items(): 186 185 self.assertEqual(expect[k], v) 187 self.assert Equal(norm(expect.values()), norm(d.values()))186 self.assertItemsEqual(expect.values(), d.values()) 188 187 189 188 def test_log(self): … … 232 231 # (by read_binary); if we are chunking properly, it will be called 5 times 233 232 # as long as the chunksize is 1 << 16. 234 self.assert _(f.numcalls > 2)233 self.assertTrue(f.numcalls > 2) 235 234 236 235 def test_fieldstorage_multipart(self): … … 258 257 """ 259 258 fs = cgi.FieldStorage(fp=StringIO(postdata), environ=env) 260 self.assertEqual s(len(fs.list), 4)259 self.assertEqual(len(fs.list), 4) 261 260 expect = [{'name':'id', 'filename':None, 'value':'1234'}, 262 261 {'name':'title', 'filename':None, 'value':''}, … … 266 265 for k, exp in expect[x].items(): 267 266 got = getattr(fs.list[x], k) 268 self.assertEquals(got, exp) 267 self.assertEqual(got, exp) 268 269 def test_fieldstorage_multipart_maxline(self): 270 # Issue #18167 271 maxline = 1 << 16 272 self.maxDiff = None 273 def check(content): 274 data = """ 275 ---123 276 Content-Disposition: form-data; name="upload"; filename="fake.txt" 277 Content-Type: text/plain 278 279 %s 280 ---123-- 281 """.replace('\n', '\r\n') % content 282 environ = { 283 'CONTENT_LENGTH': str(len(data)), 284 'CONTENT_TYPE': 'multipart/form-data; boundary=-123', 285 'REQUEST_METHOD': 'POST', 286 } 287 self.assertEqual(gen_result(data, environ), {'upload': content}) 288 check('x' * (maxline - 1)) 289 check('x' * (maxline - 1) + '\r') 290 check('x' * (maxline - 1) + '\r' + 'y' * (maxline - 1)) 269 291 270 292 _qs_result = { … … 347 369 def test_deprecated_parse_qs(self): 348 370 # this func is moved to urlparse, this is just a sanity check 349 self.assertEqual({'a': ['A1'], 'B': ['B3'], 'b': ['B2']}, 350 cgi.parse_qs('a=A1&b=B2&B=B3')) 371 with check_warnings(('cgi.parse_qs is deprecated, use urlparse.' 372 'parse_qs instead', PendingDeprecationWarning)): 373 self.assertEqual({'a': ['A1'], 'B': ['B3'], 'b': ['B2']}, 374 cgi.parse_qs('a=A1&b=B2&B=B3')) 351 375 352 376 def test_deprecated_parse_qsl(self): 353 377 # this func is moved to urlparse, this is just a sanity check 354 self.assertEqual([('a', 'A1'), ('b', 'B2'), ('B', 'B3')], 355 cgi.parse_qsl('a=A1&b=B2&B=B3')) 378 with check_warnings(('cgi.parse_qsl is deprecated, use urlparse.' 379 'parse_qsl instead', PendingDeprecationWarning)): 380 self.assertEqual([('a', 'A1'), ('b', 'B2'), ('B', 'B3')], 381 cgi.parse_qsl('a=A1&b=B2&B=B3')) 356 382 357 383 def test_parse_header(self): … … 380 406 cgi.parse_header('attachment; filename="strange;name";size=123;'), 381 407 ("attachment", {"filename": "strange;name", "size": "123"})) 408 self.assertEqual( 409 cgi.parse_header('form-data; name="files"; filename="fo\\"o;bar"'), 410 ("form-data", {"name": "files", "filename": 'fo"o;bar'})) 382 411 383 412
Note:
See TracChangeset
for help on using the changeset viewer.