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
64
65
66
67
68
|
"""Integration tests for backwards-compatible stdout mode (no --output-dir)."""
import os
import shutil
import sys
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
import importlib.util
spec = importlib.util.spec_from_file_location(
"eml_script",
os.path.join(os.path.dirname(__file__), '..', 'eml-view-and-extract-attachments.py')
)
eml_script = importlib.util.module_from_spec(spec)
spec.loader.exec_module(eml_script)
print_email = eml_script.print_email
FIXTURES = os.path.join(os.path.dirname(__file__), 'fixtures')
class TestPlainTextStdout:
def test_metadata_and_body_printed(self, tmp_path, capsys):
eml_src = os.path.join(FIXTURES, 'plain-text.eml')
working_eml = tmp_path / "message.eml"
shutil.copy2(eml_src, working_eml)
print_email(str(working_eml))
captured = capsys.readouterr()
assert "From: Jonathan Smith <jsmith@example.com>" in captured.out
assert "To: Craig Jennings <craig@example.com>" in captured.out
assert "Subject: Re: Fw: 4319 Danneel Street" in captured.out
assert "Date:" in captured.out
assert "Sent:" in captured.out
assert "Received:" in captured.out
assert "4319 Danneel Street" in captured.out
class TestHtmlFallbackStdout:
def test_html_converted_on_stdout(self, tmp_path, capsys):
eml_src = os.path.join(FIXTURES, 'html-only.eml')
working_eml = tmp_path / "message.eml"
shutil.copy2(eml_src, working_eml)
print_email(str(working_eml))
captured = capsys.readouterr()
# Should see converted text, not raw HTML
assert "HTML" in captured.out
assert "<p>" not in captured.out
class TestAttachmentsStdout:
def test_attachment_extracted_alongside_eml(self, tmp_path, capsys):
eml_src = os.path.join(FIXTURES, 'with-attachment.eml')
working_eml = tmp_path / "message.eml"
shutil.copy2(eml_src, working_eml)
print_email(str(working_eml))
captured = capsys.readouterr()
assert "Extracted attachment:" in captured.out
assert "Ltr Carrollton.pdf" in captured.out
# File should exist alongside the EML
extracted = tmp_path / "Ltr Carrollton.pdf"
assert extracted.exists()
|