123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- import smtplib
- try: # python 3
- from email.mime.text import MIMEText
- except ImportError: # python 2?
- from email.MIMEText import MIMEText
- from pytest_localserver import plugin, smtp
- def send_plain_email(to, from_, subject, txt, server=('localhost', 25)):
- """
- Sends a simple plain text message via SMTP.
- """
- if type(to) in (tuple, list):
- to = ', '.join(to)
- # Create a text/plain message
- msg = MIMEText(txt)
- msg['Subject'] = subject
- msg['From'] = from_
- msg['To'] = to
- host, port = server[:2]
- server = smtplib.SMTP(host, port)
- server.set_debuglevel(1)
- server.sendmail(from_, to, msg.as_string())
- server.quit()
- # define test fixture here again in order to run tests without having to
- # install the plugin anew every single time
- smtpserver = plugin.smtpserver
- def test_smtpserver_funcarg(smtpserver):
- assert isinstance(smtpserver, smtp.Server)
- assert smtpserver.is_alive()
- assert smtpserver.accepting and smtpserver.addr
- def test_server_is_killed(smtpserver):
- assert smtpserver.is_alive()
- smtpserver.stop()
- assert not smtpserver.is_alive()
- def test_server_is_deleted(smtpserver):
- assert smtpserver.is_alive()
- smtpserver.__del__() # need to call magic method here!
- assert not smtpserver.is_alive()
- def test_smtpserver_has_empty_outbox_at_startup(smtpserver):
- assert len(smtpserver.outbox) == 0
- def test_send_email(smtpserver):
- # send one e-mail
- send_plain_email(
- 'alice@example.com', 'webmaster@example.com',
- 'Your e-mail is getting there', 'Seems like this test actually works!',
- smtpserver.addr)
- msg = smtpserver.outbox[-1]
- assert msg['To'] == 'alice@example.com'
- assert msg['From'] == 'webmaster@example.com'
- assert msg['Subject'] == 'Your e-mail is getting there'
- assert msg.details.rcpttos == ['alice@example.com']
- assert msg.details.peer
- assert msg.details.mailfrom
- # send another e-mail
- send_plain_email(
- 'bob@example.com', 'webmaster@example.com',
- 'His e-mail too', 'Seems like this test actually works!',
- smtpserver.addr)
- msg = smtpserver.outbox[-1]
- assert msg['To'] == 'bob@example.com'
- assert msg['From'] == 'webmaster@example.com'
- assert msg['Subject'] == 'His e-mail too'
- # two mails are now in outbox
- assert len(smtpserver.outbox) == 2
|