Merged revisions 88700 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r88700 | victor.stinner | 2011-03-02 00:08:36 +0100 (mer., 02 mars 2011) | 3 lines Issue #10911: Add tests on CGI with non-ASCII characters Patch written by Pierre Quentel ........
This commit is contained in:
parent
2b574a2332
commit
f0e293cbcd
|
@ -197,30 +197,12 @@ class CgiTests(unittest.TestCase):
|
||||||
|
|
||||||
def test_fieldstorage_multipart(self):
|
def test_fieldstorage_multipart(self):
|
||||||
#Test basic FieldStorage multipart parsing
|
#Test basic FieldStorage multipart parsing
|
||||||
env = {'REQUEST_METHOD':'POST', 'CONTENT_TYPE':'multipart/form-data; boundary=---------------------------721837373350705526688164684', 'CONTENT_LENGTH':'558'}
|
env = {
|
||||||
postdata = """-----------------------------721837373350705526688164684
|
'REQUEST_METHOD': 'POST',
|
||||||
Content-Disposition: form-data; name="id"
|
'CONTENT_TYPE': 'multipart/form-data; boundary={}'.format(BOUNDARY),
|
||||||
|
'CONTENT_LENGTH': '558'}
|
||||||
1234
|
fp = BytesIO(POSTDATA.encode('latin-1'))
|
||||||
-----------------------------721837373350705526688164684
|
fs = cgi.FieldStorage(fp, environ=env, encoding="latin-1")
|
||||||
Content-Disposition: form-data; name="title"
|
|
||||||
|
|
||||||
|
|
||||||
-----------------------------721837373350705526688164684
|
|
||||||
Content-Disposition: form-data; name="file"; filename="test.txt"
|
|
||||||
Content-Type: text/plain
|
|
||||||
|
|
||||||
Testing 123.
|
|
||||||
|
|
||||||
-----------------------------721837373350705526688164684
|
|
||||||
Content-Disposition: form-data; name="submit"
|
|
||||||
|
|
||||||
Add\x20
|
|
||||||
-----------------------------721837373350705526688164684--
|
|
||||||
"""
|
|
||||||
encoding = 'ascii'
|
|
||||||
fp = BytesIO(postdata.encode(encoding))
|
|
||||||
fs = cgi.FieldStorage(fp, environ=env, encoding=encoding)
|
|
||||||
self.assertEqual(len(fs.list), 4)
|
self.assertEqual(len(fs.list), 4)
|
||||||
expect = [{'name':'id', 'filename':None, 'value':'1234'},
|
expect = [{'name':'id', 'filename':None, 'value':'1234'},
|
||||||
{'name':'title', 'filename':None, 'value':''},
|
{'name':'title', 'filename':None, 'value':''},
|
||||||
|
@ -231,6 +213,21 @@ Content-Disposition: form-data; name="submit"
|
||||||
got = getattr(fs.list[x], k)
|
got = getattr(fs.list[x], k)
|
||||||
self.assertEqual(got, exp)
|
self.assertEqual(got, exp)
|
||||||
|
|
||||||
|
def test_fieldstorage_multipart_non_ascii(self):
|
||||||
|
#Test basic FieldStorage multipart parsing
|
||||||
|
env = {'REQUEST_METHOD':'POST',
|
||||||
|
'CONTENT_TYPE': 'multipart/form-data; boundary={}'.format(BOUNDARY),
|
||||||
|
'CONTENT_LENGTH':'558'}
|
||||||
|
for encoding in ['iso-8859-1','utf-8']:
|
||||||
|
fp = BytesIO(POSTDATA_NON_ASCII.encode(encoding))
|
||||||
|
fs = cgi.FieldStorage(fp, environ=env,encoding=encoding)
|
||||||
|
self.assertEqual(len(fs.list), 1)
|
||||||
|
expect = [{'name':'id', 'filename':None, 'value':'\xe7\xf1\x80'}]
|
||||||
|
for x in range(len(fs.list)):
|
||||||
|
for k, exp in expect[x].items():
|
||||||
|
got = getattr(fs.list[x], k)
|
||||||
|
self.assertEqual(got, exp)
|
||||||
|
|
||||||
_qs_result = {
|
_qs_result = {
|
||||||
'key1': 'value1',
|
'key1': 'value1',
|
||||||
'key2': ['value2x', 'value2y'],
|
'key2': ['value2x', 'value2y'],
|
||||||
|
@ -346,6 +343,36 @@ this is the content of the fake file
|
||||||
cgi.parse_header('attachment; filename="strange;name";size=123;'),
|
cgi.parse_header('attachment; filename="strange;name";size=123;'),
|
||||||
("attachment", {"filename": "strange;name", "size": "123"}))
|
("attachment", {"filename": "strange;name", "size": "123"}))
|
||||||
|
|
||||||
|
BOUNDARY = "---------------------------721837373350705526688164684"
|
||||||
|
|
||||||
|
POSTDATA = """-----------------------------721837373350705526688164684
|
||||||
|
Content-Disposition: form-data; name="id"
|
||||||
|
|
||||||
|
1234
|
||||||
|
-----------------------------721837373350705526688164684
|
||||||
|
Content-Disposition: form-data; name="title"
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------------721837373350705526688164684
|
||||||
|
Content-Disposition: form-data; name="file"; filename="test.txt"
|
||||||
|
Content-Type: text/plain
|
||||||
|
|
||||||
|
Testing 123.
|
||||||
|
|
||||||
|
-----------------------------721837373350705526688164684
|
||||||
|
Content-Disposition: form-data; name="submit"
|
||||||
|
|
||||||
|
Add\x20
|
||||||
|
-----------------------------721837373350705526688164684--
|
||||||
|
"""
|
||||||
|
|
||||||
|
POSTDATA_NON_ASCII = """-----------------------------721837373350705526688164684
|
||||||
|
Content-Disposition: form-data; name="id"
|
||||||
|
|
||||||
|
\xe7\xf1\x80
|
||||||
|
-----------------------------721837373350705526688164684
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def test_main():
|
||||||
run_unittest(CgiTests)
|
run_unittest(CgiTests)
|
||||||
|
|
|
@ -62,6 +62,9 @@ Build
|
||||||
Tests
|
Tests
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
- Issue #10911: Add tests on CGI with non-ASCII characters. Patch written by
|
||||||
|
Pierre Quentel.
|
||||||
|
|
||||||
- Issue #9931: Fix hangs in GUI tests under Windows in certain conditions.
|
- Issue #9931: Fix hangs in GUI tests under Windows in certain conditions.
|
||||||
Patch by Hirokazu Yamamoto.
|
Patch by Hirokazu Yamamoto.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue