summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBert JW Regeer <bertjw@regeer.org>2015-04-11 12:46:05 -0400
committerBert JW Regeer <bertjw@regeer.org>2015-04-12 16:19:57 -0400
commitd25bbd6209ac6bc5a93eaede5b88e0bac42b448e (patch)
tree2572df089bc757e7bc6ccdf4ef85c31d55f7fc5e
parent594fa0b9ef0192bed7205a194091c132a125a953 (diff)
downloadwebob-cleanup/remove_fakecgibody.tar.gz
Remove FakeCGIBodycleanup/remove_fakecgibody
-rw-r--r--tests/test_request.py84
-rw-r--r--webob/request.py45
2 files changed, 0 insertions, 129 deletions
diff --git a/tests/test_request.py b/tests/test_request.py
index 0bc55e2..9877fbe 100644
--- a/tests/test_request.py
+++ b/tests/test_request.py
@@ -3318,90 +3318,6 @@ class TestRequest_functional(unittest.TestCase):
req2_body = req2.body
self.assertEqual(req_body, req2_body)
-class FakeCGIBodyTests(unittest.TestCase):
- def test_encode_multipart_value_type_options(self):
- from cgi import FieldStorage
- from webob.request import BaseRequest, FakeCGIBody
- from webob.multidict import MultiDict
- multipart_type = 'multipart/form-data; boundary=foobar'
- from io import BytesIO
- body = (
- b'--foobar\r\n'
- b'Content-Disposition: form-data; name="bananas"; '
- b'filename="bananas.txt"\r\n'
- b'Content-type: text/plain; charset="utf-7"\r\n'
- b'\r\n'
- b"these are the contents of the file 'bananas.txt'\r\n"
- b'\r\n'
- b'--foobar--')
- multipart_body = BytesIO(body)
- environ = BaseRequest.blank('/').environ
- environ.update(CONTENT_TYPE=multipart_type)
- environ.update(REQUEST_METHOD='POST')
- environ.update(CONTENT_LENGTH=len(body))
- fs = FieldStorage(multipart_body, environ=environ)
- vars = MultiDict.from_fieldstorage(fs)
- self.assertEqual(vars['bananas'].__class__, FieldStorage)
- fake_body = FakeCGIBody(vars, multipart_type)
- self.assertEqual(fake_body.read(), body)
-
- def test_encode_multipart_no_boundary(self):
- from webob.request import FakeCGIBody
- self.assertRaises(ValueError, FakeCGIBody, {}, 'multipart/form-data')
-
- def test_repr(self):
- from webob.request import FakeCGIBody
- body = FakeCGIBody({'bananas': 'bananas'},
- 'multipart/form-data; boundary=foobar')
- body.read(1)
- import re
- self.assertEqual(
- re.sub(r'\b0x[0-9a-f]+\b', '<whereitsat>', repr(body)),
- "<FakeCGIBody at <whereitsat> viewing {'bananas': 'ba...nas'}>",
- )
-
- def test_fileno(self):
- from webob.request import FakeCGIBody
- body = FakeCGIBody({'bananas': 'bananas'},
- 'multipart/form-data; boundary=foobar')
- self.assertEqual(body.fileno(), None)
-
- def test_iter(self):
- from webob.request import FakeCGIBody
- body = FakeCGIBody({'bananas': 'bananas'},
- 'multipart/form-data; boundary=foobar')
- self.assertEqual(list(body), [
- b'--foobar\r\n',
- b'Content-Disposition: form-data; name="bananas"\r\n',
- b'\r\n',
- b'bananas\r\n',
- b'--foobar--',
- ])
-
- def test_readline(self):
- from webob.request import FakeCGIBody
- body = FakeCGIBody({'bananas': 'bananas'},
- 'multipart/form-data; boundary=foobar')
- self.assertEqual(body.readline(), b'--foobar\r\n')
- self.assertEqual(
- body.readline(),
- b'Content-Disposition: form-data; name="bananas"\r\n')
- self.assertEqual(body.readline(), b'\r\n')
- self.assertEqual(body.readline(), b'bananas\r\n')
- self.assertEqual(body.readline(), b'--foobar--')
- # subsequent calls to readline will return ''
-
- def test_read_bad_content_type(self):
- from webob.request import FakeCGIBody
- body = FakeCGIBody({'bananas': 'bananas'}, 'application/jibberjabber')
- self.assertRaises(AssertionError, body.read)
-
- def test_read_urlencoded(self):
- from webob.request import FakeCGIBody
- body = FakeCGIBody({'bananas': 'bananas'},
- 'application/x-www-form-urlencoded')
- self.assertEqual(body.read(), b'bananas=bananas')
-
class Test_cgi_FieldStorage__repr__patch(unittest.TestCase):
def _callFUT(self, fake):
diff --git a/webob/request.py b/webob/request.py
index 8269ac5..4d01318 100644
--- a/webob/request.py
+++ b/webob/request.py
@@ -1565,51 +1565,6 @@ def _cgi_FieldStorage__repr__patch(self):
cgi_FieldStorage.__repr__ = _cgi_FieldStorage__repr__patch
-class FakeCGIBody(io.RawIOBase):
- def __init__(self, vars, content_type):
- if content_type.startswith('multipart/form-data'):
- if not _get_multipart_boundary(content_type):
- raise ValueError('Content-type: %r does not contain boundary'
- % content_type)
- self.vars = vars
- self.content_type = content_type
- self.file = None
-
- def __repr__(self):
- inner = repr(self.vars)
- if len(inner) > 20:
- inner = inner[:15] + '...' + inner[-5:]
- return '<%s at 0x%x viewing %s>' % (
- self.__class__.__name__,
- abs(id(self)), inner)
-
- def fileno(self):
- return None
-
- @staticmethod
- def readable():
- return True
-
- def readinto(self, buff):
- if self.file is None:
- if self.content_type.startswith(
- 'application/x-www-form-urlencoded'):
- data = '&'.join(
- '%s=%s' % (quote_plus(bytes_(k, 'utf8')), quote_plus(bytes_(v, 'utf8')))
- for k,v in self.vars.items()
- )
- self.file = io.BytesIO(bytes_(data))
- elif self.content_type.startswith('multipart/form-data'):
- self.file = _encode_multipart(
- self.vars.items(),
- self.content_type,
- fout=io.BytesIO()
- )[1]
- self.file.seek(0)
- else:
- assert 0, ('Bad content type: %r' % self.content_type)
- return self.file.readinto(buff)
-
def _get_multipart_boundary(ctype):
m = re.search(r'boundary=([^ ]+)', ctype, re.I)