Lines Matching refs:self
18 def test_arbitrary_name_unstructured(self):
21 self.assertIsInstance(h, headerregistry.BaseHeader)
22 self.assertIsInstance(h, headerregistry.UnstructuredHeader)
24 def test_name_case_ignored(self):
27 self.assertNotIn('Subject', factory.registry)
29 self.assertIsInstance(h, headerregistry.BaseHeader)
30 self.assertIsInstance(h, headerregistry.UniqueUnstructuredHeader)
33 def __init__(self, *args, **kw):
36 def test_override_default_base_class(self):
37 factory = headerregistry.HeaderRegistry(base_class=self.FooBase)
39 self.assertIsInstance(h, self.FooBase)
40 self.assertIsInstance(h, headerregistry.UnstructuredHeader)
45 def test_override_default_class(self):
46 factory = headerregistry.HeaderRegistry(default_class=self.FooDefault)
48 self.assertIsInstance(h, headerregistry.BaseHeader)
49 self.assertIsInstance(h, self.FooDefault)
51 def test_override_default_class_only_overrides_default(self):
52 factory = headerregistry.HeaderRegistry(default_class=self.FooDefault)
54 self.assertIsInstance(h, headerregistry.BaseHeader)
55 self.assertIsInstance(h, headerregistry.UniqueUnstructuredHeader)
57 def test_dont_use_default_map(self):
60 self.assertIsInstance(h, headerregistry.BaseHeader)
61 self.assertIsInstance(h, headerregistry.UnstructuredHeader)
63 def test_map_to_type(self):
68 self.assertIsInstance(h1, headerregistry.BaseHeader)
69 self.assertIsInstance(h1, headerregistry.UnstructuredHeader)
70 self.assertIsInstance(h2, headerregistry.BaseHeader)
71 self.assertIsInstance(h2, headerregistry.UniqueUnstructuredHeader)
78 def make_header(self, name, value):
79 return self.factory(name, value)
84 def test_str(self):
85 h = self.make_header('subject', 'this is a test')
86 self.assertIsInstance(h, str)
87 self.assertEqual(h, 'this is a test')
88 self.assertEqual(str(h), 'this is a test')
90 def test_substr(self):
91 h = self.make_header('subject', 'this is a test')
92 self.assertEqual(h[5:7], 'is')
94 def test_has_name(self):
95 h = self.make_header('subject', 'this is a test')
96 self.assertEqual(h.name, 'subject')
98 def _test_attr_ro(self, attr):
99 h = self.make_header('subject', 'this is a test')
100 with self.assertRaises(AttributeError):
103 def test_name_read_only(self):
104 self._test_attr_ro('name')
106 def test_defects_read_only(self):
107 self._test_attr_ro('defects')
109 def test_defects_is_tuple(self):
110 h = self.make_header('subject', 'this is a test')
111 self.assertEqual(len(h.defects), 0)
112 self.assertIsInstance(h.defects, tuple)
114 h = self.make_header('date', '')
115 self.assertEqual(len(h.defects), 1)
116 self.assertIsInstance(h.defects, tuple)
119 #def test_CR_in_value(self):
123 # h = self.make_header('subject', value)
124 # self.assertEqual(h, value)
125 # self.assertDefectsEqual(h.defects, [errors.ObsoleteHeaderDefect])
131 def string_as_value(self,
139 h = self.make_header('Subject', source)
140 self.assertEqual(h, decoded)
141 self.assertDefectsEqual(h.defects, defects)
142 self.assertEqual(h.fold(policy=policy.default), folded)
177 def test_parse_date(self):
178 h = self.make_header('date', self.datestring)
179 self.assertEqual(h, self.datestring)
180 self.assertEqual(h.datetime, self.dt)
181 self.assertEqual(h.datetime.utcoffset(), self.utcoffset)
182 self.assertEqual(h.defects, ())
184 def test_set_from_datetime(self):
185 h = self.make_header('date', self.dt)
186 self.assertEqual(h, self.datestring)
187 self.assertEqual(h.datetime, self.dt)
188 self.assertEqual(h.defects, ())
190 def test_date_header_properties(self):
191 h = self.make_header('date', self.datestring)
192 self.assertIsInstance(h, headerregistry.UniqueDateHeader)
193 self.assertEqual(h.max_count, 1)
194 self.assertEqual(h.defects, ())
196 def test_resent_date_header_properties(self):
197 h = self.make_header('resent-date', self.datestring)
198 self.assertIsInstance(h, headerregistry.DateHeader)
199 self.assertEqual(h.max_count, None)
200 self.assertEqual(h.defects, ())
202 def test_no_value_is_defect(self):
203 h = self.make_header('date', '')
204 self.assertEqual(len(h.defects), 1)
205 self.assertIsInstance(h.defects[0], errors.HeaderMissingRequiredValue)
207 def test_invalid_date_format(self):
209 h = self.make_header('date', s)
210 self.assertEqual(h, s)
211 self.assertIsNone(h.datetime)
212 self.assertEqual(len(h.defects), 1)
213 self.assertIsInstance(h.defects[0], errors.InvalidDateDefect)
215 def test_invalid_date_value(self):
217 h = self.make_header('date', s)
218 self.assertEqual(h, s)
219 self.assertIsNone(h.datetime)
220 self.assertEqual(len(h.defects), 1)
221 self.assertIsInstance(h.defects[0], errors.InvalidDateDefect)
223 def test_datetime_read_only(self):
224 h = self.make_header('date', self.datestring)
225 with self.assertRaises(AttributeError):
228 def test_set_date_header_from_datetime(self):
230 m['Date'] = self.dt
231 self.assertEqual(m['Date'], self.datestring)
232 self.assertEqual(m['Date'].datetime, self.dt)
238 def content_type_as_value(self,
250 h = self.make_header('Content-Type', source)
251 self.assertEqual(h.content_type, content_type)
252 self.assertEqual(h.maintype, maintype)
253 self.assertEqual(h.subtype, subtype)
254 self.assertEqual(h.params, parmdict)
255 with self.assertRaises(TypeError):
257 self.assertDefectsEqual(h.defects, defects)
258 self.assertEqual(h, decoded)
259 self.assertEqual(h.fold(policy=policy.default), folded)
806 def cte_as_value(self,
815 h = self.make_header('Content-Transfer-Encoding', source)
816 self.assertEqual(h.cte, cte)
817 self.assertDefectsEqual(h.defects, defects)
818 self.assertEqual(h, decoded)
819 self.assertEqual(h.fold(policy=policy.default), folded)
846 def content_disp_as_value(self,
856 h = self.make_header('Content-Disposition', source)
857 self.assertEqual(h.content_disposition, content_disposition)
858 self.assertEqual(h.params, parmdict)
859 self.assertDefectsEqual(h.defects, defects)
860 self.assertEqual(h, decoded)
861 self.assertEqual(h.fold(policy=policy.default), folded)
929 def version_string_as_MIME_Version(self,
936 h = self.make_header('MIME-Version', source)
937 self.assertEqual(h, decoded)
938 self.assertEqual(h.version, version)
939 self.assertEqual(h.major, major)
940 self.assertEqual(h.minor, minor)
941 self.assertDefectsEqual(h.defects, defects)
944 self.assertEqual(h.fold(policy=policy.default),
1246 def example_as_address(self, source, defects, decoded, display_name,
1248 h = self.make_header('sender', source)
1249 self.assertEqual(h, decoded)
1250 self.assertDefectsEqual(h.defects, defects)
1252 self.assertEqual(str(a), decoded)
1253 self.assertEqual(len(h.groups), 1)
1254 self.assertEqual([a], list(h.groups[0].addresses))
1255 self.assertEqual([a], list(h.addresses))
1256 self.assertEqual(a.display_name, display_name)
1257 self.assertEqual(a.addr_spec, addr_spec)
1258 self.assertEqual(a.username, username)
1259 self.assertEqual(a.domain, domain)
1261 #self.assertEqual(a.comment, comment)
1263 def example_as_group(self, source, defects, decoded, display_name,
1267 h = self.make_header('to', source)
1268 self.assertEqual(h, gdecoded)
1269 self.assertDefectsEqual(h.defects, defects)
1270 self.assertEqual(h.groups[0].addresses, h.addresses)
1271 self.assertEqual(len(h.groups), 1)
1272 self.assertEqual(len(h.addresses), 1)
1274 self.assertEqual(str(a), decoded)
1275 self.assertEqual(a.display_name, display_name)
1276 self.assertEqual(a.addr_spec, addr_spec)
1277 self.assertEqual(a.username, username)
1278 self.assertEqual(a.domain, domain)
1280 def test_simple_address_list(self):
1283 h = self.make_header('to', value)
1284 self.assertEqual(h, value)
1285 self.assertEqual(len(h.groups), 3)
1286 self.assertEqual(len(h.addresses), 3)
1288 self.assertEqual(h.groups[i].addresses[0], h.addresses[i])
1289 self.assertEqual(str(h.addresses[0]), 'Fred <dinsdale@python.org>')
1290 self.assertEqual(str(h.addresses[1]), 'foo@example.com')
1291 self.assertEqual(str(h.addresses[2]),
1293 self.assertEqual(h.addresses[2].display_name,
1296 def test_complex_address_list(self):
1297 examples = list(self.example_params.values())
1313 h = self.make_header('to', source)
1314 self.assertEqual(h.split(','), expected.split(','))
1315 self.assertEqual(h, expected)
1316 self.assertEqual(len(h.groups), 7 + len(examples) - 6)
1317 self.assertEqual(h.groups[0].display_name, 'dummy list')
1318 self.assertEqual(h.groups[1].display_name, 'another')
1319 self.assertEqual(h.groups[6].display_name, 'A "list"')
1320 self.assertEqual(len(h.addresses), len(examples))
1322 self.assertIsNone(h.groups[i+2].display_name)
1323 self.assertEqual(str(h.groups[i+2].addresses[0]), examples[i][2])
1325 self.assertIsNone(h.groups[i].display_name)
1326 self.assertEqual(str(h.groups[i].addresses[0]), examples[i-1][2])
1328 self.assertEqual(str(h.addresses[i]), examples[i][2])
1329 self.assertEqual(h.addresses[i].addr_spec, examples[i][4])
1331 def test_address_read_only(self):
1332 h = self.make_header('sender', 'abc@xyz.com')
1333 with self.assertRaises(AttributeError):
1336 def test_addresses_read_only(self):
1337 h = self.make_header('sender', 'abc@xyz.com')
1338 with self.assertRaises(AttributeError):
1341 def test_groups_read_only(self):
1342 h = self.make_header('sender', 'abc@xyz.com')
1343 with self.assertRaises(AttributeError):
1346 def test_addresses_types(self):
1348 h = self.make_header('to', source)
1349 self.assertIsInstance(h.addresses, tuple)
1350 self.assertIsInstance(h.addresses[0], Address)
1352 def test_groups_types(self):
1354 h = self.make_header('to', source)
1355 self.assertIsInstance(h.groups, tuple)
1356 self.assertIsInstance(h.groups[0], Group)
1358 def test_set_from_Address(self):
1359 h = self.make_header('to', Address('me', 'foo', 'example.com'))
1360 self.assertEqual(h, 'me <foo@example.com>')
1362 def test_set_from_Address_list(self):
1363 h = self.make_header('to', [Address('me', 'foo', 'example.com'),
1365 self.assertEqual(h, 'me <foo@example.com>, you <bar@example.com>')
1367 def test_set_from_Address_and_Group_list(self):
1368 h = self.make_header('to', [Address('me', 'foo', 'example.com'),
1372 self.assertEqual(h, 'me <foo@example.com>, bing: fiz <z@b.com>, '
1374 self.assertEqual(h.fold(policy=policy.default.clone(max_line_length=40)),
1379 def test_set_from_Group_list(self):
1380 h = self.make_header('to', [Group('bing', [Address('fiz', 'z', 'b.com'),
1382 self.assertEqual(h, 'bing: fiz <z@b.com>, zif <f@c.com>;')
1387 def _test_attr_ro(self, obj, attr):
1388 with self.assertRaises(AttributeError):
1391 def test_address_display_name_ro(self):
1392 self._test_attr_ro(Address('foo', 'bar', 'baz'), 'display_name')
1394 def test_address_username_ro(self):
1395 self._test_attr_ro(Address('foo', 'bar', 'baz'), 'username')
1397 def test_address_domain_ro(self):
1398 self._test_attr_ro(Address('foo', 'bar', 'baz'), 'domain')
1400 def test_group_display_name_ro(self):
1401 self._test_attr_ro(Group('foo'), 'display_name')
1403 def test_group_addresses_ro(self):
1404 self._test_attr_ro(Group('foo'), 'addresses')
1406 def test_address_from_username_domain(self):
1408 self.assertEqual(a.display_name, 'foo')
1409 self.assertEqual(a.username, 'bar')
1410 self.assertEqual(a.domain, 'baz')
1411 self.assertEqual(a.addr_spec, 'bar@baz')
1412 self.assertEqual(str(a), 'foo <bar@baz>')
1414 def test_address_from_addr_spec(self):
1416 self.assertEqual(a.display_name, 'foo')
1417 self.assertEqual(a.username, 'bar')
1418 self.assertEqual(a.domain, 'baz')
1419 self.assertEqual(a.addr_spec, 'bar@baz')
1420 self.assertEqual(str(a), 'foo <bar@baz>')
1422 def test_address_with_no_display_name(self):
1424 self.assertEqual(a.display_name, '')
1425 self.assertEqual(a.username, 'bar')
1426 self.assertEqual(a.domain, 'baz')
1427 self.assertEqual(a.addr_spec, 'bar@baz')
1428 self.assertEqual(str(a), 'bar@baz')
1430 def test_null_address(self):
1432 self.assertEqual(a.display_name, '')
1433 self.assertEqual(a.username, '')
1434 self.assertEqual(a.domain, '')
1435 self.assertEqual(a.addr_spec, '<>')
1436 self.assertEqual(str(a), '<>')
1438 def test_domain_only(self):
1441 self.assertEqual(a.display_name, '')
1442 self.assertEqual(a.username, '')
1443 self.assertEqual(a.domain, 'buzz')
1444 self.assertEqual(a.addr_spec, '@buzz')
1445 self.assertEqual(str(a), '@buzz')
1447 def test_username_only(self):
1450 self.assertEqual(a.display_name, '')
1451 self.assertEqual(a.username, 'buzz')
1452 self.assertEqual(a.domain, '')
1453 self.assertEqual(a.addr_spec, 'buzz')
1454 self.assertEqual(str(a), 'buzz')
1456 def test_display_name_only(self):
1458 self.assertEqual(a.display_name, 'buzz')
1459 self.assertEqual(a.username, '')
1460 self.assertEqual(a.domain, '')
1461 self.assertEqual(a.addr_spec, '<>')
1462 self.assertEqual(str(a), 'buzz <>')
1464 def test_quoting(self):
1468 self.assertEqual(a.display_name, 'Sara J.')
1469 self.assertEqual(a.username, 'bad name')
1470 self.assertEqual(a.domain, 'example.com')
1471 self.assertEqual(a.addr_spec, '"bad name"@example.com')
1472 self.assertEqual(str(a), '"Sara J." <"bad name"@example.com>')
1474 def test_il8n(self):
1476 self.assertEqual(a.display_name, 'Éric')
1477 self.assertEqual(a.username, 'wok')
1478 self.assertEqual(a.domain, 'exàmple.com')
1479 self.assertEqual(a.addr_spec, 'wok@exàmple.com')
1480 self.assertEqual(str(a), 'Éric <wok@exàmple.com>')
1483 #def test_non_ascii_username_raises(self):
1484 # with self.assertRaises(ValueError):
1487 def test_crlf_in_constructor_args_raises(self):
1503 with self.subTest(kwargs=kwargs), self.assertRaisesRegex(ValueError, "invalid arguments"):
1506 def test_non_ascii_username_in_addr_spec_raises(self):
1507 with self.assertRaises(ValueError):
1510 def test_address_addr_spec_and_username_raises(self):
1511 with self.assertRaises(TypeError):
1514 def test_address_addr_spec_and_domain_raises(self):
1515 with self.assertRaises(TypeError):
1518 def test_address_addr_spec_and_username_and_domain_raises(self):
1519 with self.assertRaises(TypeError):
1522 def test_space_in_addr_spec_username_raises(self):
1523 with self.assertRaises(ValueError):
1526 def test_bad_addr_sepc_raises(self):
1527 with self.assertRaises(ValueError):
1530 def test_empty_group(self):
1532 self.assertEqual(g.display_name, 'foo')
1533 self.assertEqual(g.addresses, tuple())
1534 self.assertEqual(str(g), 'foo:;')
1536 def test_empty_group_list(self):
1538 self.assertEqual(g.display_name, 'foo')
1539 self.assertEqual(g.addresses, tuple())
1540 self.assertEqual(str(g), 'foo:;')
1542 def test_null_group(self):
1544 self.assertIsNone(g.display_name)
1545 self.assertEqual(g.addresses, tuple())
1546 self.assertEqual(str(g), 'None:;')
1548 def test_group_with_addresses(self):
1551 self.assertEqual(g.display_name, 'foo')
1552 self.assertEqual(g.addresses, tuple(addrs))
1553 self.assertEqual(str(g), 'foo: b <b@c>, a <b@c>;')
1555 def test_group_with_addresses_no_display_name(self):
1558 self.assertIsNone(g.display_name)
1559 self.assertEqual(g.addresses, tuple(addrs))
1560 self.assertEqual(str(g), 'None: b <b@c>, a <b@c>;')
1562 def test_group_with_one_address_no_display_name(self):
1565 self.assertIsNone(g.display_name)
1566 self.assertEqual(g.addresses, tuple(addrs))
1567 self.assertEqual(str(g), 'b <b@c>')
1569 def test_display_name_quoting(self):
1571 self.assertEqual(g.display_name, 'foo.bar')
1572 self.assertEqual(g.addresses, tuple())
1573 self.assertEqual(str(g), '"foo.bar":;')
1575 def test_display_name_blanks_not_quoted(self):
1577 self.assertEqual(g.display_name, 'foo bar')
1578 self.assertEqual(g.addresses, tuple())
1579 self.assertEqual(str(g), 'foo bar:;')
1581 def test_set_message_header_from_address(self):
1585 self.assertEqual(m['to'], 'foo <bar@example.com>')
1586 self.assertEqual(m['to'].addresses, (a,))
1588 def test_set_message_header_from_group(self):
1592 self.assertEqual(m['to'], 'foo bar:;')
1593 self.assertEqual(m['to'].addresses, g.addresses)
1595 def test_address_comparison(self):
1597 self.assertEqual(Address('foo', 'bar', 'example.com'), a)
1598 self.assertNotEqual(Address('baz', 'bar', 'example.com'), a)
1599 self.assertNotEqual(Address('foo', 'baz', 'example.com'), a)
1600 self.assertNotEqual(Address('foo', 'bar', 'baz'), a)
1601 self.assertFalse(a == object())
1602 self.assertTrue(a == ALWAYS_EQ)
1604 def test_group_comparison(self):
1607 self.assertEqual(Group('foo bar', (a,)), g)
1608 self.assertNotEqual(Group('baz', [a]), g)
1609 self.assertNotEqual(Group('foo bar', []), g)
1610 self.assertFalse(g == object())
1611 self.assertTrue(g == ALWAYS_EQ)
1616 def test_address_display_names(self):
1636 h = self.make_header('To', Address(name, addr_spec='a@b.com'))
1637 self.assertEqual(h.fold(policy=policy.default),
1640 def test_short_unstructured(self):
1641 h = self.make_header('subject', 'this is a test')
1642 self.assertEqual(h.fold(policy=policy.default),
1645 def test_long_unstructured(self):
1646 h = self.make_header('Subject', 'This is a long header '
1649 self.assertEqual(h.fold(policy=policy.default),
1654 def test_unstructured_short_max_line_length(self):
1655 h = self.make_header('Subject', 'this is a short header '
1657 self.assertEqual(
1666 def test_fold_unstructured_single_word(self):
1667 h = self.make_header('Subject', 'test')
1668 self.assertEqual(h.fold(policy=policy.default), 'Subject: test\n')
1670 def test_fold_unstructured_short(self):
1671 h = self.make_header('Subject', 'test test test')
1672 self.assertEqual(h.fold(policy=policy.default),
1675 def test_fold_unstructured_with_overlong_word(self):
1676 h = self.make_header('Subject', 'thisisaverylonglineconsistingofa'
1678 self.assertEqual(
1691 def test_fold_unstructured_with_two_overlong_words(self):
1692 h = self.make_header('Subject', 'thisisaverylonglineconsistingofa'
1694 self.assertEqual(
1714 def test_fold_unstructured_with_slightly_long_word(self):
1715 h = self.make_header('Subject', 'thislongwordislessthanmaxlinelen')
1716 self.assertEqual(
1720 def test_fold_unstructured_with_commas(self):
1722 h = self.make_header('Subject', "This header is intended to "
1725 self.assertEqual(
1733 def test_fold_address_list(self):
1734 h = self.make_header('To', '"Theodore H. Perfect" <yes@man.com>, '
1737 self.assertEqual(h.fold(policy=policy.default), textwrap.dedent("""\
1743 def test_fold_date_header(self):
1744 h = self.make_header('Date', 'Sat, 2 Feb 2002 17:00:06 -0800')
1745 self.assertEqual(h.fold(policy=policy.default),
1748 def test_fold_overlong_words_using_RFC2047(self):
1749 h = self.make_header(
1753 self.assertEqual(
1761 def test_message_id_header_is_not_folded(self):
1762 h = self.make_header(
1765 self.assertEqual(
1770 h = self.make_header(
1773 self.assertEqual(
1778 h = self.make_header('Message-ID', '<ईमेल@wők.com>')
1779 self.assertEqual(
1785 h = self.make_header('Message-ID', '<ईमेलfromMessage@wők.com>')
1786 self.assertEqual(