Tests: added test for uploading files with SSL.

* * *
[mq]: multipart
This commit is contained in:
Tiago Natel de Moura
2020-02-05 13:29:41 +00:00
parent d3e218a8c3
commit 12e15ba43b
2 changed files with 49 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
from tempfile import TemporaryFile
import os, cgi
def read(environ):
length = int(environ.get('CONTENT_LENGTH', 0))
body = TemporaryFile(mode='w+b')
body.write(bytes(environ['wsgi.input'].read(length)))
body.seek(0)
environ['wsgi.input'] = body
return body
def application(environ, start_response):
file = read(environ)
form = cgi.FieldStorage(fp=file, environ=environ, keep_blank_values=True)
filename = form['file'].filename
data = filename.encode() + form['file'].file.read()
start_response('200 OK', [
('Content-Type', 'text/plain'),
('Content-Length', str(len(data))),
])
return data

View File

@@ -1,3 +1,5 @@
import io
import os
import re
import ssl
import subprocess
@@ -591,5 +593,25 @@ basicConstraints = critical,CA:TRUE"""
'url scheme https',
)
def test_tls_big_upload(self):
self.load('upload')
self.certificate()
self.add_tls(application='upload')
filename = 'test.txt'
data = '0123456789' * 9000
res = self.post_ssl(body={
'file': {
'filename': filename,
'type': 'text/plain',
'data': io.StringIO(data),
}
})
self.assertEqual(res['status'], 200, 'status ok')
self.assertEqual(res['body'], filename + data)
if __name__ == '__main__':
TestTLS.main()