summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/dummy_server.py3
-rw-r--r--test/test_filepost.py31
-rw-r--r--test/test_withdummy.py20
3 files changed, 50 insertions, 4 deletions
diff --git a/test/dummy_server.py b/test/dummy_server.py
index 676ba5f8..8e79b0bd 100644
--- a/test/dummy_server.py
+++ b/test/dummy_server.py
@@ -39,6 +39,9 @@ class TestingApp(object):
size = int(request.params.get('upload_size', '0'))
file = request.params.get(param)
+ if file == None:
+ return Response("Missing parameter: %s" % param, status='400')
+
if not isinstance(file, FieldStorage):
return Response("Not a file: %s" % param, status='400')
diff --git a/test/test_filepost.py b/test/test_filepost.py
new file mode 100644
index 00000000..599cd037
--- /dev/null
+++ b/test/test_filepost.py
@@ -0,0 +1,31 @@
+import unittest
+
+import sys
+sys.path.append('../')
+
+from urllib3 import filepost
+from StringIO import StringIO
+
+class TestFilePost(unittest.TestCase):
+ def test_generator(self):
+ fields = {
+ 'foo': 'bar',
+ 'somefile': ('name.txt', StringIO('trolololol')),
+ }
+
+ stream = filepost.MultipartEncoderGenerator(fields, boundary="boundary")
+ body = ''.join(chunk for chunk in filepost.IterStreamer(stream))
+ self.assertEqual(body, u'--boundary\r\nContent-Disposition: form-data; name="somefile"; filename="name.txt"\r\nContent-Type: text/plain\r\n\r\ntrolololol\r\n--boundary\r\nContent-Disposition: form-data; name="foo"\r\nContent-Type: text/plain\r\n\r\nbar\r\n--boundary--\r\n')
+
+ def test_len(self):
+ fields = {
+ 'foo': 'bar',
+ 'somefile': ('name.txt', StringIO('trolololol')),
+ }
+
+ iterdata = filepost.MultipartEncoderGenerator(fields, boundary="boundary")
+ predicted_size = len(iterdata)
+
+ body = ''.join(chunk for chunk in filepost.IterStreamer(iterdata))
+
+ self.assertEqual(len(body), predicted_size)
diff --git a/test/test_withdummy.py b/test/test_withdummy.py
index a5f79f33..69e4efb7 100644
--- a/test/test_withdummy.py
+++ b/test/test_withdummy.py
@@ -21,7 +21,7 @@ class TestConnectionPool(unittest.TestCase):
r = self.http_pool.get_url('/', retries=1)
if r.data != "Dummy server!":
raise Exception("Got unexpected response: %s" % r.data)
- except Exception, e:
+ except MaxRetryError, e:
raise Exception("Dummy server not running, make sure HOST and PORT correspond to the dummy server: %s" % e.message)
return super(TestConnectionPool, self).__init__(*args, **kw)
@@ -57,11 +57,23 @@ class TestConnectionPool(unittest.TestCase):
r = self.http_pool.post_url('/upload', fields=fields)
self.assertEquals(r.status, 200, r.data)
- def test_unicode_upload(self):
- fields = {
- u'\xe2\x99\xa5': (u'\xe2\x99\xa5.txt', u'\xe2\x99\xa5'),
+ def _make_fields(self, s):
+ return {
+ u'upload_param': s,
+ u'upload_filename': '%s.txt' % s,
+ u'upload_size': u'3',
+ s: ('%s.txt' % s, s),
}
+ def test_unicode_decoded(self):
+ fields = self._make_fields('\xe2\x99\xa5')
+
+ r = self.http_pool.post_url('/upload', fields=fields)
+ self.assertEquals(r.status, 200, r.data)
+
+ def test_unicode_encoded(self):
+ fields = self._make_fields(u'\u2665')
+
r = self.http_pool.post_url('/upload', fields=fields)
self.assertEquals(r.status, 200, r.data)