1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
# Copyright 2014-2021 The aiosmtpd Developers
# SPDX-License-Identifier: Apache-2.0
"""Test the LMTP protocol."""
import socket
from typing import Generator
import pytest
from aiosmtpd.controller import Controller
from aiosmtpd.handlers import Sink
from aiosmtpd.lmtp import LMTP
from aiosmtpd.testing.statuscodes import SMTP_STATUS_CODES as S
from .conftest import Global
class LMTPController(Controller):
def factory(self):
self.smtpd = LMTP(self.handler)
return self.smtpd
@pytest.fixture(scope="module", autouse=True)
def lmtp_controller() -> Generator[LMTPController, None, None]:
controller = LMTPController(Sink)
controller.start()
Global.set_addr_from(controller)
#
yield controller
#
controller.stop()
def test_lhlo(client):
code, mesg = client.docmd("LHLO example.com")
lines = mesg.splitlines()
assert lines == [
bytes(socket.getfqdn(), "utf-8"),
b"SIZE 33554432",
b"8BITMIME",
b"HELP",
]
assert code == 250
def test_helo(client):
# HELO and EHLO are not valid LMTP commands.
resp = client.helo("example.com")
assert resp == S.S500_CMD_UNRECOG(b"HELO")
def test_ehlo(client):
# HELO and EHLO are not valid LMTP commands.
resp = client.ehlo("example.com")
assert resp == S.S500_CMD_UNRECOG(b"EHLO")
def test_help(client):
# https://github.com/aio-libs/aiosmtpd/issues/113
resp = client.docmd("HELP")
assert resp == S.S250_SUPPCMD_LMTP
|