|
2 | 2 | import json
|
3 | 3 | import os
|
4 | 4 | import requests_mock
|
| 5 | +import email |
5 | 6 | import unittest
|
6 | 7 | import shutil
|
7 | 8 | import base64
|
8 |
| -import email |
9 | 9 |
|
10 | 10 |
|
11 | 11 | _dir = os.path.dirname(__file__)
|
@@ -516,10 +516,27 @@ def test__validate_email_string(self):
|
516 | 516 | { "email": "<[email protected]>", "expected": True},
|
517 | 517 | { "email": "Sender [email protected]", "expected": False},
|
518 | 518 | {"email": "Sender <sender2email.com>", "expected": False},
|
519 |
| - {"email": "Sender <sender@email,com>", "expected": True}, |
520 |
| - {"email": "Sender <sender+alias@email,com>", "expected": True}, |
521 | 519 | ]
|
522 | 520 |
|
| 521 | + # The behavior of email.parseaddr depends on the python patch version |
| 522 | + # See https://github.com/python/cpython/issues/102988 |
| 523 | + # or associated changelogs, e.g. |
| 524 | + # https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-20-final |
| 525 | + if getattr(email.utils, "supports_strict_parsing", False): |
| 526 | + emails.extend( |
| 527 | + [ |
| 528 | + {"email": "Sender <sender@email,com>", "expected": False}, |
| 529 | + {"email": "Sender <sender+alias@email,com>", "expected": False}, |
| 530 | + ] |
| 531 | + ) |
| 532 | + else: |
| 533 | + emails.extend( |
| 534 | + [ |
| 535 | + {"email": "Sender <sender@email,com>", "expected": True}, |
| 536 | + {"email": "Sender <sender+alias@email,com>", "expected": True}, |
| 537 | + ] |
| 538 | + ) |
| 539 | + |
523 | 540 | for e in emails:
|
524 | 541 | if e["expected"]:
|
525 | 542 | self.assertTrue(self.gmail._validate_email_string(e["email"]))
|
|
0 commit comments