def test_post_form_data(self): """Testing the multipart form data generation.""" request = HttpRequest('/', 'POST') request.add_field('foo', 'bar') request.add_field('bar', 42) request.add_field('err', 'must-be-deleted') request.add_field('name', 'somestring') request.del_field('err') ctype, content = request.encode_multipart_formdata() m = re.match(b'^multipart/form-data; boundary=(.*)$', ctype) self.assertFalse(m is None) fields = [l.strip() for l in content.split(b'--' + m.group(1))][1:-1] d = {} disposition_re = re.compile( b'Content-Disposition: form-data; name="(.*?)"$') for f in fields: lst = f.split(b'\r\n\r\n') self.assertEqual(len(lst), 2) k, v = lst m = disposition_re.match(k) self.assertFalse(m is None) d[m.group(1)] = v self.assertEqual(d, { b'foo': b'bar', b'bar': b'42', b'name': b'somestring' })
def test_encode_multipart_formdata_normalizes_string_types(self): """Testing HttpRequest.encode_multipart_formdata normalizes Unicode and byte strings """ konnichiwa = '\u3053\u3093\u306b\u3061\u306f' request = HttpRequest(url='/', method='POST') request.add_field('foo', konnichiwa) request.add_field('bar', konnichiwa.encode('utf-8')) request.add_field('baz', b'\xff') self.spy_on(request._make_mime_boundary, call_fake=lambda r: b'BOUNDARY') ctype, content = request.encode_multipart_formdata() self.assertEqual(ctype, 'multipart/form-data; boundary=BOUNDARY') self.assertEqual( content, b'--BOUNDARY\r\n' b'Content-Disposition: form-data; name="foo"\r\n' b'\r\n' b'\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf' b'\r\n' b'--BOUNDARY\r\n' b'Content-Disposition: form-data; name="bar"\r\n' b'\r\n' b'\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf' b'\r\n' b'--BOUNDARY\r\n' b'Content-Disposition: form-data; name="baz"\r\n' b'\r\n' b'\xff' b'\r\n' b'--BOUNDARY--\r\n\r\n')
def test_post_form_data(self): """Test the multipart form data generation.""" request = HttpRequest('/', 'POST') request.add_field('foo', 'bar') request.add_field('bar', 42) request.add_field('err', 'must-be-deleted') request.add_field('name', 'somestring') request.del_field('err') ctype, content = request.encode_multipart_formdata() m = re.match('^multipart/form-data; boundary=(.*)$', ctype) self.assertFalse(m is None) fields = [l.strip() for l in content.split('--' + m.group(1))][1:-1] d = {} for f in fields: lst = f.split('\r\n\r\n') self.assertEquals(len(lst), 2) k, v = lst m = re.match('Content-Disposition: form-data; name="(.*?)"$', k) self.assertFalse(m is None) d[m.group(1)] = v self.assertEquals(d, {'foo': 'bar', 'bar': '42', 'name': 'somestring'})
def test_defaults(self): """Testing HttpRequest default attribute values""" request = HttpRequest('/') self.assertEqual(request.url, '/') self.assertEqual(request.method, 'GET') content_type, content = request.encode_multipart_formdata() self.assertIsNone(content_type) self.assertIsNone(content)
def test_post_form_data(self): """Testing the multipart form data generation.""" request = HttpRequest('/', 'POST') request.add_field('foo', 'bar') request.add_field('bar', 42) request.add_field('err', 'must-be-deleted') request.add_field('name', 'somestring') request.del_field('err') ctype, content = request.encode_multipart_formdata() d = self._get_fields_as_dict(ctype, content) self.assertEqual( d, {b'foo': b'bar', b'bar': b'42', b'name': b'somestring'})
def test_post_form_data(self): """Testing the multipart form data generation.""" request = HttpRequest('/', 'POST') request.add_field('foo', 'bar') request.add_field('bar', 42) request.add_field('err', 'must-be-deleted') request.add_field('name', 'somestring') request.del_field('err') ctype, content = request.encode_multipart_formdata() d = self._get_fields_as_dict(ctype, content) self.assertEqual( d, {b'foo': b'bar', b'bar': b'42', b'name': b'somestring'})
def test_post_unicode_data(self): """Testing the encoding of multipart form data with unicode and binary field data """ konnichiwa = '\u3053\u3093\u306b\u3061\u306f' request = HttpRequest('/', 'POST') request.add_field('foo', konnichiwa) request.add_field('bar', konnichiwa.encode('utf-8')) request.add_field('baz', b'\xff') ctype, content = request.encode_multipart_formdata() fields = self._get_fields_as_dict(ctype, content) self.assertTrue('foo' in fields) self.assertEqual(fields['foo'], konnichiwa.encode('utf-8')) self.assertEqual(fields['bar'], konnichiwa.encode('utf-8')) self.assertEqual(fields['baz'], b'\xff')
def test_post_unicode_data(self): """Testing the encoding of multipart form data with unicode and binary field data """ konnichiwa = '\u3053\u3093\u306b\u3061\u306f' request = HttpRequest('/', 'POST') request.add_field('foo', konnichiwa) request.add_field('bar', konnichiwa.encode('utf-8')) request.add_field('baz', b'\xff') ctype, content = request.encode_multipart_formdata() fields = self._get_fields_as_dict(ctype, content) self.assertTrue('foo' in fields) self.assertEqual(fields['foo'], konnichiwa.encode('utf-8')) self.assertEqual(fields['bar'], konnichiwa.encode('utf-8')) self.assertEqual(fields['baz'], b'\xff')
def test_encode_multipart_formdata(self): """Testing HttpRequest.encode_multipart_formdata""" request = HttpRequest(url='/', method='POST') request.add_field('foo', 'bar') request.add_field('bar', 42) request.add_field('name', 'somestring') request.add_file(name='my-file', filename='filename.txt', content=b'This is a test.') self.spy_on(request._make_mime_boundary, call_fake=lambda r: b'BOUNDARY') ctype, content = request.encode_multipart_formdata() self.assertEqual(ctype, 'multipart/form-data; boundary=BOUNDARY') self.assertEqual( content, b'--BOUNDARY\r\n' b'Content-Disposition: form-data; name="foo"\r\n' b'\r\n' b'bar' b'\r\n' b'--BOUNDARY\r\n' b'Content-Disposition: form-data; name="bar"\r\n' b'\r\n' b'42' b'\r\n' b'--BOUNDARY\r\n' b'Content-Disposition: form-data; name="name"\r\n' b'\r\n' b'somestring' b'\r\n' b'--BOUNDARY\r\n' b'Content-Disposition: form-data; name="my-file";' b' filename="filename.txt"\r\n' b'Content-Type: text/plain\r\n' b'\r\n' b'This is a test.' b'\r\n' b'--BOUNDARY--\r\n\r\n')
class HttpRequestTests(TestCase): def setUp(self): self.request = HttpRequest('/') def test_default_values(self): """Testing the default values.""" self.assertEqual(self.request.url, '/') self.assertEqual(self.request.method, 'GET') content_type, content = self.request.encode_multipart_formdata() self.assertTrue(content_type is None) self.assertTrue(content is None) def test_post_form_data(self): """Testing the multipart form data generation.""" request = HttpRequest('/', 'POST') request.add_field('foo', 'bar') request.add_field('bar', 42) request.add_field('err', 'must-be-deleted') request.add_field('name', 'somestring') request.del_field('err') ctype, content = request.encode_multipart_formdata() m = re.match(b'^multipart/form-data; boundary=(.*)$', ctype) self.assertFalse(m is None) fields = [l.strip() for l in content.split(b'--' + m.group(1))][1:-1] d = {} disposition_re = re.compile( b'Content-Disposition: form-data; name="(.*?)"$') for f in fields: lst = f.split(b'\r\n\r\n') self.assertEqual(len(lst), 2) k, v = lst m = disposition_re.match(k) self.assertFalse(m is None) d[m.group(1)] = v self.assertEqual( d, {b'foo': b'bar', b'bar': b'42', b'name': b'somestring'})
class HttpRequestTests(TestCase): def setUp(self): self.request = HttpRequest('/') def test_default_values(self): """Testing the default values.""" self.assertEquals(self.request.url, '/') self.assertEquals(self.request.method, 'GET') content_type, content = self.request.encode_multipart_formdata() self.assertTrue(content_type is None) self.assertTrue(content is None) def test_post_form_data(self): """Testing the multipart form data generation.""" request = HttpRequest('/', 'POST') request.add_field('foo', 'bar') request.add_field('bar', 42) request.add_field('err', 'must-be-deleted') request.add_field('name', 'somestring') request.del_field('err') ctype, content = request.encode_multipart_formdata() m = re.match('^multipart/form-data; boundary=(.*)$', ctype) self.assertFalse(m is None) fields = [l.strip() for l in content.split('--' + m.group(1))][1:-1] d = {} for f in fields: lst = f.split('\r\n\r\n') self.assertEquals(len(lst), 2) k, v = lst m = re.match('Content-Disposition: form-data; name="(.*?)"$', k) self.assertFalse(m is None) d[m.group(1)] = v self.assertEquals(d, {'foo': 'bar', 'bar': '42', 'name': 'somestring'})
class HttpRequestTests(TestCase): def setUp(self): self.request = HttpRequest('/') def test_default_values(self): """Testing the default values.""" self.assertEqual(self.request.url, '/') self.assertEqual(self.request.method, 'GET') content_type, content = self.request.encode_multipart_formdata() self.assertTrue(content_type is None) self.assertTrue(content is None) def _get_fields_as_dict(self, ctype, content): """Extract the fields of a HTTP multipart request as a dictionary.""" m = re.match(b'^multipart/form-data; boundary=(.*)$', ctype) self.assertFalse(m is None) fields = [l.strip() for l in content.split(b'--' + m.group(1))][1:-1] d = {} disposition_re = re.compile( b'Content-Disposition: form-data; name="(.*?)"$') for f in fields: lst = f.split(b'\r\n\r\n') self.assertEqual(len(lst), 2) k, v = lst m = disposition_re.match(k) self.assertFalse(m is None) d[m.group(1)] = v return d def test_post_form_data(self): """Testing the multipart form data generation.""" request = HttpRequest('/', 'POST') request.add_field('foo', 'bar') request.add_field('bar', 42) request.add_field('err', 'must-be-deleted') request.add_field('name', 'somestring') request.del_field('err') ctype, content = request.encode_multipart_formdata() d = self._get_fields_as_dict(ctype, content) self.assertEqual(d, { b'foo': b'bar', b'bar': b'42', b'name': b'somestring' }) def test_post_unicode_data(self): """Testing the encoding of multipart form data with unicode and binary field data """ konnichiwa = '\u3053\u3093\u306b\u3061\u306f' request = HttpRequest('/', 'POST') request.add_field('foo', konnichiwa) request.add_field('bar', konnichiwa.encode('utf-8')) request.add_field('baz', b'\xff') ctype, content = request.encode_multipart_formdata() fields = self._get_fields_as_dict(ctype, content) self.assertTrue('foo' in fields) self.assertEqual(fields['foo'], konnichiwa.encode('utf-8')) self.assertEqual(fields['bar'], konnichiwa.encode('utf-8')) self.assertEqual(fields['baz'], b'\xff')
class HttpRequestTests(TestCase): def setUp(self): self.request = HttpRequest('/') def test_default_values(self): """Testing the default values.""" self.assertEqual(self.request.url, '/') self.assertEqual(self.request.method, 'GET') content_type, content = self.request.encode_multipart_formdata() self.assertTrue(content_type is None) self.assertTrue(content is None) def _get_fields_as_dict(self, ctype, content): """Extract the fields of a HTTP multipart request as a dictionary.""" m = re.match(b'^multipart/form-data; boundary=(.*)$', ctype) self.assertFalse(m is None) fields = [l.strip() for l in content.split(b'--' + m.group(1))][1:-1] d = {} disposition_re = re.compile( b'Content-Disposition: form-data; name="(.*?)"$') for f in fields: lst = f.split(b'\r\n\r\n') self.assertEqual(len(lst), 2) k, v = lst m = disposition_re.match(k) self.assertFalse(m is None) d[m.group(1)] = v return d def test_post_form_data(self): """Testing the multipart form data generation.""" request = HttpRequest('/', 'POST') request.add_field('foo', 'bar') request.add_field('bar', 42) request.add_field('err', 'must-be-deleted') request.add_field('name', 'somestring') request.del_field('err') ctype, content = request.encode_multipart_formdata() d = self._get_fields_as_dict(ctype, content) self.assertEqual( d, {b'foo': b'bar', b'bar': b'42', b'name': b'somestring'}) def test_post_unicode_data(self): """Testing the encoding of multipart form data with unicode and binary field data """ konnichiwa = '\u3053\u3093\u306b\u3061\u306f' request = HttpRequest('/', 'POST') request.add_field('foo', konnichiwa) request.add_field('bar', konnichiwa.encode('utf-8')) request.add_field('baz', b'\xff') ctype, content = request.encode_multipart_formdata() fields = self._get_fields_as_dict(ctype, content) self.assertTrue('foo' in fields) self.assertEqual(fields['foo'], konnichiwa.encode('utf-8')) self.assertEqual(fields['bar'], konnichiwa.encode('utf-8')) self.assertEqual(fields['baz'], b'\xff')