wsgi/test/unittest_wsgi.py
changeset 10000 4352b7ccde04
parent 9995 c9f1111e0ee8
child 10670 96380c1524b0
--- a/wsgi/test/unittest_wsgi.py	Thu Sep 25 15:49:13 2014 +0200
+++ b/wsgi/test/unittest_wsgi.py	Fri Oct 17 18:16:58 2014 +0200
@@ -6,6 +6,7 @@
 from cubicweb.devtools.webtest import CubicWebTestTC
 
 from cubicweb.wsgi.request import CubicWebWsgiRequest
+from cubicweb.multipart import MultipartError
 
 
 class WSGIAppTC(CubicWebTestTC):
@@ -66,6 +67,19 @@
             '/',
             params={'__login': self.admlogin, '__password': self.admpassword})
 
+    def test_post_bad_form(self):
+        with self.assertRaises(MultipartError):
+            self.webapp.post(
+                '/',
+                params='badcontent',
+                headers={'Content-Type': 'multipart/form-data'})
+
+    def test_post_non_form(self):
+        self.webapp.post(
+            '/',
+            params='{}',
+            headers={'Content-Type': 'application/json'})
+
     def test_get_multiple_variables(self):
         r = webtest.app.TestRequest.blank('/?arg=1&arg=2')
         req = CubicWebWsgiRequest(r.environ, self.vreg)
@@ -78,6 +92,17 @@
 
         self.assertEqual([u'1', u'2'], req.form['arg'])
 
+    def test_post_files(self):
+        content_type, params = self.webapp.encode_multipart(
+            (), (('filefield', 'aname', 'acontent'),))
+        r = webtest.app.TestRequest.blank(
+            '/', POST=params, content_type=content_type)
+        req = CubicWebWsgiRequest(r.environ, self.vreg)
+        self.assertIn('filefield', req.form)
+        fieldvalue = req.form['filefield']
+        self.assertEqual(u'aname', fieldvalue[0])
+        self.assertEqual('acontent', fieldvalue[1].read())
+
     def test_post_unicode_urlencoded(self):
         params = 'arg=%C3%A9'
         r = webtest.app.TestRequest.blank(