diff options
| author | Bert JW Regeer <bertjw@regeer.org> | 2015-04-11 12:46:05 -0400 |
|---|---|---|
| committer | Bert JW Regeer <bertjw@regeer.org> | 2015-04-12 16:19:57 -0400 |
| commit | d25bbd6209ac6bc5a93eaede5b88e0bac42b448e (patch) | |
| tree | 2572df089bc757e7bc6ccdf4ef85c31d55f7fc5e | |
| parent | 594fa0b9ef0192bed7205a194091c132a125a953 (diff) | |
| download | webob-cleanup/remove_fakecgibody.tar.gz | |
Remove FakeCGIBodycleanup/remove_fakecgibody
| -rw-r--r-- | tests/test_request.py | 84 | ||||
| -rw-r--r-- | webob/request.py | 45 |
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) |
