This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Reason given by maintainers: Replaced by smtpdfix
pytest SMTPD Fixture
A simple SMTP server based on aiosmtpd for use as a fixture with pytest that supports encryption and authentication. All this does is receives messages and appends them to a list as an email.Message.
This fisture is intended to address use-cases where to test an application that sends an email it needs to be intercepted for subsequent processing. For example, sending an email with a code for password reset or two-factor authentication. This fixture allows a test to trigger the email being sent, ensure that it's sent, and read the code from the email.
Installing
Install using pip:
pip install bebleo-smtpd-fixture
Or, if you're using setuptools it can be included in the tests_require section of a setup.py file:
setup(
...
tests_require = [
"pytest",
"bebleo-smtpd-fixture",
],
)
Using
To use the smtpd fixture import it into your test file and then use it like any other pytest fixture. for example:
# test_mail.py
from smtplib import SMTP
from bebleo_smtpd_fixture import smtpd
def test_sendmail(smtpd):
from_addr = "from.addr@example.org"
to_addrs = "to.addr@example.org"
msg = f"From: {from_addr}\r\nTo: {to_addrs}\r\nSubject: Foo\r\n\r\nFoo bar"
with SMTP(smtpd.hostname, smtpd.port) as client:
client.sendmail(from_addr, to_addrs, msg)
assert len(smtpd.messages) == 1
To use STARTTLS:
from smtplib import SMTP
import pytest
from bebleo_smtpd_fixture import smtpd
@pytest.fixture
def mock_use_starttls(monkeypatch):
monkeypatch.setenv('SMTPD_USE_STARTTLS', 'True')
def test_sendmail(mock_use_starttls, smtpd):
from_ = "from.addr@example.org"
to_ = "to.addr@example.org"
msg = f"From: {from_}\r\nTo: {to_}\r\nSubject: Foo\r\n\r\nFoo bar"
with SMTP(smtpd.hostname, smtpd.port) as client:
client.starttls() # Note that you need to call starttls first.
client.sendmail(from_addr, to_addrs, msg)
assert len(smtpd.messages) == 1
The certificates included with the fixture will work for addresses localhost, localhost.localdomain, 127.0.0.1, 0.0.0.1, ::1. If using other addresses the key (key.pem) and certificate (cert.pem) must be in a location specified under SMTP_SSL_CERTS_PATH.
Configuration
Configuration can be handled through environment variables:
| Variable | Default | Description |
|---|---|---|
SMTPD_HOST |
127.0.0.1 |
The hostname that the fixture will listen on. |
SMTPD_PORT |
8025 |
The port that the fixture will listen on. |
SMPTD_USERNAME |
user |
|
SMTPD_PASSWORD |
password |
|
SMTPD_USE_SSL |
False |
Whether the fixture should use fixed TLS/SSL for transactions. If using smtplib requires that SMTP_SSL be used instead of SMTP. |
SMTPD_USE_STARTTLS |
False |
Whether the fixture should use StartTLS to encrypt the connections. If using smptlib requires that the SMTP.starttls() be called before other commands are issued. |
SMTPD_ENFORCE_AUTH |
False |
If set to true then the fixture refuses MAIL, RCPT, DATA commands until authentication is completed. |
SMTPD_SSL_CERTS_PATH |
\certs\ |
The path to the key and certificate for encrypted communication. |
If these variables are included in a .env file they'll be loaded automatically.
Known Issues
- Firewalls may interfere with the operation of the smtp server.
- Authenticating with LOGIN and PLAIN mechanisms fails over TLS/SSL, but works with STARTTLS. Issue #10
- Currently no support for termination through signals. Issue #4
- Key and certificate for encrypted communications must be called key.pem and cert.pem respectively. Issue #15
©2020, Written with ☕ and ❤ in Montreal, QC
Metadata
Release files for bebleo-smtpd-fixture 0.2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| bebleo-smtpd-fixture-0.2.3.tar.gz | 14.3 kB | Without provenance | Details for bebleo-smtpd-fixture-0.2.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| bebleo_smtpd_fixture-0.2.3-py3-none-any.whl | Python 3 | none | any | Details for bebleo_smtpd_fixture-0.2.3-py3-none-any.whl |
Total release size: 29.1 kB
Release files / bebleo-smtpd-fixture-0.2.3.tar.gz
| Download URL | bebleo-smtpd-fixture-0.2.3.tar.gz |
|---|---|
| Size | 14.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0df5b51311b58c471073548767bfc773d53a9a3f0d794caedac678b4ef309a2d
|
|
BLAKE2b-256 checksum How to use checksums |
78c79e1315166fdcdedfeac87c40c6c3b02774e14ee5c575f06ffe6926eab6cb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.3
|
Release files / bebleo_smtpd_fixture-0.2.3-py3-none-any.whl
| Download URL | bebleo_smtpd_fixture-0.2.3-py3-none-any.whl |
|---|---|
| Size | 14.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0c904b046b08bd89a242257eb4c20e7263259cca06d61fe232c5e7d5fd1a5b41
|
|
BLAKE2b-256 checksum How to use checksums |
e6b4ba5c6950f09b06cf4cc1aa61f19bf381f4d3d920800ae4bde08c136094c1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.3
|
Security for bebleo-smtpd-fixture 0.2.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.