Update tests/test_utils_sendmail.py
Run CI Tests / test (push) Successful in 2m47s

This commit is contained in:
2025-07-30 20:32:12 +02:00
parent bcd01bf989
commit cff87da7c8
+32 -27
View File
@@ -7,39 +7,44 @@ sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')
from slic.utils.sendmail import sendmail
from slic.utils.sendmail import *
import os
import tempfile
from email.mime.text import MIMEText
from slic.utils.sendmail import sendmail
def test_sendmail_mime_format_in_tmux():
# Retrieve the tmux TTY from the environment
tmux_tty = os.environ.get("TMUX_TTY")
assert tmux_tty and os.path.exists(tmux_tty), f"Invalid TMUX_TTY: {tmux_tty}"
def test_sendmail_mime_format_to_file():
# Define test message parameters
to_addr=f"| tee {tmux_tty}"
from_addr = "robot@local"
subject = "MIME Format Test"
body = "This is the MIME body."
# Send the message via your sendmail()
sendmail(
to_addr=f"| tee {tmux_tty}", # Write the message to the tmux terminal
from_addr=from_addr,
subject=subject,
body=body
)
# Create temporary file
with tempfile.NamedTemporaryFile("r+", delete=False) as tmp:
tmp_path = tmp.name
# Capture the content from the tmux terminal
output = subprocess.check_output(
["tmux", "capture-pane", "-pt", "test-session"],
timeout=2
).decode()
try:
# Send message
sendmail(
to_addr=f"| tee {tmp_path}",
from_addr=from_addr,
subject=subject,
body=body
)
# Build the expected MIME-formatted message
msg = MIMEText(body)
msg["To"] = to_addr
msg["From"] = from_addr or getpass.getuser()
msg["Subject"] = subject
expected = msg.as_string()
# Read file content
with open(tmp_path, "r") as f:
output = f.read()
# Verify that each line of the expected MIME message is present in the tmux output
for line in expected.splitlines():
assert line in output, f"Missing line in tmux output: {line!r}"
# Expected message
msg = MIMEText(body)
msg["To"] = f"| tee {tmp_path}"
msg["From"] = from_addr
msg["Subject"] = subject
expected = msg.as_string()
# Check that the good message is in the file
for line in expected.splitlines():
assert line in output, f"Missing line in output: {line!r}"
finally:
os.remove(tmp_path)