summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--test/python/upload/wsgi.py27
-rw-r--r--test/test_tls.py22
2 files changed, 49 insertions, 0 deletions
diff --git a/test/python/upload/wsgi.py b/test/python/upload/wsgi.py
new file mode 100644
index 00000000..37ee89eb
--- /dev/null
+++ b/test/python/upload/wsgi.py
@@ -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
diff --git a/test/test_tls.py b/test/test_tls.py
index 3514bbcb..1ead111c 100644
--- a/test/test_tls.py
+++ b/test/test_tls.py
@@ -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()