summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai Groner <kai@gronr.com>2011-03-15 16:25:50 -0400
committerKai Groner <kai@gronr.com>2011-03-15 16:25:50 -0400
commit44d778ff8bc039b7577f4a87e05a5ca125b9776d (patch)
treefd7628be0446f5cfebbbf92f6b73222a9334caeb
parentc4d05e20363f865d8426c3e8f3da5d7e5d6ded23 (diff)
downloadwebob-44d778ff8bc039b7577f4a87e05a5ca125b9776d.tar.gz
cover BaseRequest.str_GET plus a (formerly) missing FakeCGIBody/FieldStorage test
-rw-r--r--tests/test_request.py52
-rw-r--r--webob/request.py2
2 files changed, 50 insertions, 4 deletions
diff --git a/tests/test_request.py b/tests/test_request.py
index d2217ff..95fd30c 100644
--- a/tests/test_request.py
+++ b/tests/test_request.py
@@ -995,6 +995,33 @@ class BaseRequestTests(unittest.TestCase):
# POST
# str_GET
+ def test_str_GET_reflects_query_string(self):
+ environ = {
+ 'QUERY_STRING': 'foo=123',
+ }
+ req = self._makeOne(environ)
+ result = req.str_GET
+ self.assertEqual(result, {'foo': '123'})
+ req.query_string = 'foo=456'
+ result = req.str_GET
+ self.assertEqual(result, {'foo': '456'})
+ req.query_string = ''
+ result = req.str_GET
+ self.assertEqual(result, {})
+
+ def test_str_GET_updates_query_string(self):
+ environ = {
+ }
+ req = self._makeOne(environ)
+ result = req.query_string
+ self.assertEqual(result, '')
+ req.str_GET['foo'] = '123'
+ result = req.query_string
+ self.assertEqual(result, 'foo=123')
+ del req.str_GET['foo']
+ result = req.query_string
+ self.assertEqual(result, '')
+
# GET
# str_postvars
# postvars
@@ -2215,9 +2242,28 @@ class UnseekableInputWithSeek(UnseekableInput):
class FakeCGIBodyTests(unittest.TestCase):
def test_encode_multipart_value_type_options(self):
- # TODO: cover webob/request.py:1282
- # I'm not sure this code is actually reachable
- pass
+ from StringIO import StringIO
+ from cgi import FieldStorage
+ from webob.request import BaseRequest, FakeCGIBody
+ from webob.multidict import MultiDict
+ multipart_type = 'multipart/form-data; boundary=foobar'
+ multipart_body = StringIO(
+ '--foobar\r\n'
+ 'Content-Disposition: form-data; name="bananas"; filename="bananas.txt"\r\n'
+ 'Content-type: text/plain; charset="utf-9"\r\n'
+ '\r\n'
+ "these are the contents of the file 'bananas.txt'\r\n"
+ '\r\n'
+ '--foobar--'
+ )
+ environ = BaseRequest.blank('/').environ
+ environ.update(CONTENT_TYPE=multipart_type)
+ environ.update(REQUEST_METHOD='POST')
+ fs = FieldStorage(multipart_body, environ=environ)
+ vars = MultiDict.from_fieldstorage(fs)
+ self.assertEqual(vars['bananas'].__class__, FieldStorage)
+ body = FakeCGIBody(vars, multipart_type)
+ self.assertEqual(body.read(), multipart_body.getvalue())
def test_encode_multipart_no_boundary(self):
from webob.request import FakeCGIBody
diff --git a/webob/request.py b/webob/request.py
index ff42229..bb8b0e8 100644
--- a/webob/request.py
+++ b/webob/request.py
@@ -5,7 +5,7 @@ import tempfile
import urllib
import urlparse
if sys.version >= '2.7':
- from io import BytesIO as StringIO
+ from io import BytesIO as StringIO # pragma nocover
else:
from cStringIO import StringIO # pragma nocover