⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.144
Server IP:
157.245.143.252
Server:
Linux www 6.11.0-9-generic #9-Ubuntu SMP PREEMPT_DYNAMIC Mon Oct 14 13:19:59 UTC 2024 x86_64
Server Software:
nginx/1.26.0
PHP Version:
8.3.11
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
usr
/
lib
/
python3
/
dist-packages
/
twisted
/
mail
/
test
/
View File Name :
test_bounce.py
# Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details. from __future__ import annotations import email.message import email.parser from email.message import Message from io import BytesIO, StringIO from typing import IO, AnyStr, Callable from twisted.mail import bounce from twisted.trial import unittest class BounceTests(unittest.TestCase): """ Bounce message generation """ def test_bounceMessageUnicode(self) -> None: """ L{twisted.mail.bounce.generateBounce} can accept L{unicode}. """ fromAddress, to, s = bounce.generateBounce( StringIO( """\ From: Moshe Zadka
To: nonexistent@example.org Subject: test """ ), "moshez@example.com", "nonexistent@example.org", ) self.assertEqual(fromAddress, b"") self.assertEqual(to, b"moshez@example.com") emailParser = email.parser.Parser() mess = emailParser.parse(StringIO(s.decode("utf-8"))) self.assertEqual(mess["To"], "moshez@example.com") self.assertEqual(mess["From"], "postmaster@example.org") self.assertEqual(mess["subject"], "Returned Mail: see transcript for details") def test_bounceMessageBytes(self) -> None: """ L{twisted.mail.bounce.generateBounce} can accept L{bytes}. """ fromAddress, to, s = bounce.generateBounce( BytesIO( b"""\ From: Moshe Zadka
To: nonexistent@example.org Subject: test """ ), b"moshez@example.com", b"nonexistent@example.org", ) self.assertEqual(fromAddress, b"") self.assertEqual(to, b"moshez@example.com") emailParser = email.parser.Parser() mess = emailParser.parse(StringIO(s.decode("utf-8"))) self.assertEqual(mess["To"], "moshez@example.com") self.assertEqual(mess["From"], "postmaster@example.org") self.assertEqual(mess["subject"], "Returned Mail: see transcript for details") def test_bounceMessageCustomTranscript(self) -> None: """ Pass a custom transcript message to L{twisted.mail.bounce.generateBounce}. """ fromAddress, to, s = bounce.generateBounce( BytesIO( b"""\ From: Moshe Zadka
To: nonexistent@example.org Subject: test """ ), b"moshez@example.com", b"nonexistent@example.org", "Custom transcript", ) self.assertEqual(fromAddress, b"") self.assertEqual(to, b"moshez@example.com") emailParser = email.parser.Parser() mess = emailParser.parse(StringIO(s.decode("utf-8"))) self.assertEqual(mess["To"], "moshez@example.com") self.assertEqual(mess["From"], "postmaster@example.org") self.assertEqual(mess["subject"], "Returned Mail: see transcript for details") self.assertTrue(mess.is_multipart()) parts: list[Message] = mess.get_payload() # type:ignore[assignment] self.assertEqual( parts[0].get_payload(), "Custom transcript\n", ) def _bounceBigMessage( self, header: AnyStr, message: AnyStr, ioType: Callable[[AnyStr], IO[AnyStr]] ) -> None: """ Pass a really big message to L{twisted.mail.bounce.generateBounce}. """ fromAddress, to, s = bounce.generateBounce( ioType(header + message), "moshez@example.com", "nonexistent@example.org" ) emailParser = email.parser.Parser() mess = emailParser.parse(StringIO(s.decode("utf-8"))) self.assertEqual(mess["To"], "moshez@example.com") self.assertEqual(mess["From"], "postmaster@example.org") self.assertEqual(mess["subject"], "Returned Mail: see transcript for details") self.assertTrue(mess.is_multipart()) parts: list[Message] = mess.get_payload() # type:ignore[assignment] innerMessage: list[Message] = parts[1].get_payload() # type:ignore[assignment] if isinstance(message, bytes): messageText = message.decode("utf-8") else: messageText = message pl: str = innerMessage[0].get_payload() # type:ignore[assignment] self.assertEqual(pl + "\n", messageText) def test_bounceBigMessage(self) -> None: """ L{twisted.mail.bounce.generateBounce} with big L{unicode} and L{bytes} messages. """ header = b"""\ From: Moshe Zadka
To: nonexistent@example.org Subject: test """ self._bounceBigMessage(header, b"Test test\n" * 10000, BytesIO) self._bounceBigMessage(header.decode("utf-8"), "More test\n" * 10000, StringIO)