diff -r c84ad981fc4a -r 4352b7ccde04 wsgi/test/unittest_wsgi.py --- 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(