1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
import unittest
import unittest.mock
from aiohttp import helpers
from aiohttp import MultiDict
class TestHelpers(unittest.TestCase):
def test_parse_mimetype(self):
self.assertEqual(
helpers.parse_mimetype(''), ('', '', '', {}))
self.assertEqual(
helpers.parse_mimetype('*'), ('*', '*', '', {}))
self.assertEqual(
helpers.parse_mimetype('application/json'),
('application', 'json', '', {}))
self.assertEqual(
helpers.parse_mimetype('application/json; charset=utf-8'),
('application', 'json', '', {'charset': 'utf-8'}))
self.assertEqual(
helpers.parse_mimetype('''application/json; charset=utf-8;'''),
('application', 'json', '', {'charset': 'utf-8'}))
self.assertEqual(
helpers.parse_mimetype('ApPlIcAtIoN/JSON;ChaRseT="UTF-8"'),
('application', 'json', '', {'charset': 'UTF-8'}))
self.assertEqual(
helpers.parse_mimetype('application/rss+xml'),
('application', 'rss', 'xml', {}))
self.assertEqual(
helpers.parse_mimetype('text/plain;base64'),
('text', 'plain', '', {'base64': ''}))
def test_basic_auth(self):
# missing password here
self.assertRaises(
ValueError, helpers.BasicAuth, None)
self.assertRaises(
ValueError, helpers.BasicAuth, 'nkim', None)
auth = helpers.BasicAuth('nkim')
self.assertEqual(auth.login, 'nkim')
self.assertEqual(auth.password, '')
auth = helpers.BasicAuth('nkim', 'pwd')
self.assertEqual(auth.login, 'nkim')
self.assertEqual(auth.password, 'pwd')
self.assertEqual(auth.encode(), 'Basic bmtpbTpwd2Q=')
def test_invalid_formdata_params(self):
with self.assertRaises(TypeError):
helpers.FormData('asdasf')
def test_invalid_formdata_params2(self):
with self.assertRaises(TypeError):
helpers.FormData('as') # 2-char str is not allowed
def test_invalid_formdata_content_type(self):
form = helpers.FormData()
invalid_vals = [0, 0.1, {}, [], b'foo']
for invalid_val in invalid_vals:
with self.assertRaises(TypeError):
form.add_field('foo', 'bar', content_type=invalid_val)
def test_invalid_formdata_filename(self):
form = helpers.FormData()
invalid_vals = [0, 0.1, {}, [], b'foo']
for invalid_val in invalid_vals:
with self.assertRaises(TypeError):
form.add_field('foo', 'bar', filename=invalid_val)
def test_invalid_formdata_content_transfer_encoding(self):
form = helpers.FormData()
invalid_vals = [0, 0.1, {}, [], b'foo']
for invalid_val in invalid_vals:
with self.assertRaises(TypeError):
form.add_field('foo',
'bar',
content_transfer_encoding=invalid_val)
def test_reify(self):
class A:
@helpers.reify
def prop(self):
return 1
a = A()
self.assertEqual(1, a.prop)
def test_reify_class(self):
class A:
@helpers.reify
def prop(self):
"""Docstring."""
return 1
self.assertIsInstance(A.prop, helpers.reify)
self.assertEqual('Docstring.', A.prop.__doc__)
def test_reify_assignment(self):
class A:
@helpers.reify
def prop(self):
return 1
a = A()
with self.assertRaises(AttributeError):
a.prop = 123
class TestSafeAtoms(unittest.TestCase):
def test_get_non_existing(self):
atoms = helpers.SafeAtoms(
{}, MultiDict(), MultiDict())
self.assertEqual(atoms['unknown'], '-')
def test_get_lower(self):
i_headers = MultiDict([('test', '123')])
o_headers = MultiDict([('TEST', '123')])
atoms = helpers.SafeAtoms({}, i_headers, o_headers)
self.assertEqual(atoms['{test}i'], '123')
self.assertEqual(atoms['{test}o'], '-')
self.assertEqual(atoms['{TEST}o'], '123')
self.assertEqual(atoms['{UNKNOWN}o'], '-')
self.assertEqual(atoms['{UNKNOWN}'], '-')
|