maildir_clean/tests/fixtures.py

138 lines
5.5 KiB
Python

from pathlib import Path
import pytest
from tempfile import TemporaryDirectory
@pytest.fixture
def tmp_dir():
tmp_dir = TemporaryDirectory(delete=False)
print("Created temporary directory ", tmp_dir.name)
yield Path(tmp_dir.name)
print("Cleaned temporary directory", tmp_dir.name)
tmp_dir.cleanup()
@pytest.fixture
def test_email(tmp_dir):
test_contents = """
Return-Path: sender@example.com
Delivered-To: recipient@example.org
Received: from mail-yw1-f174.google.com (mail-yw1-f174.google.com [209.85.128.174])
by mx.example.org (Postfix) with ESMTPS id 7B94C160C72
for recipient@example.org; Wed, 16 Apr 2025 09:23:45 -0700 (PDT)
Received: by mail-yw1-f174.google.com with SMTP id 5so12345678ywa.9
for recipient@example.org; Wed, 16 Apr 2025 09:23:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=example.com; s=20210112;
h=from:to:subject:date:message-id:mime-version
;
bh=q3rblHeObV5Ov3/B7+E3yRlCopVAn6Mkt14vBcAXxTM=;
b=QC2U9YyGp6HR5NvBxnv7y4MNO1OrF9dhZwPz+1G2FpvTZ3jrREi8W8tNkE8ys9f9Hd
GnQDUuFZqDWS9S3IxGu7CHfrFSX/5kVAVxnGK58BqJsvjtJeZ9iKjDDt8XCMQaXfJo9s
/s7UMz3C+8lXe5BqVvZXjjgTgDG5tDyb8tRNc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601;
h=from:to:subject:date:message-id:mime-version
:thread-index
;
bh=q3rblHeObV5Ov3/B7+E3yRlCopVAn6Mkt14vBcAXxTM=;
b=xyUdZMdwCGQr9bxLnOd8jBRiTDBw6LPSRkEXYzYP3yDJLYxzqA3vNh/0KoNMBTF5qF
EkCGxbBz74vvGpDLUSRKBmgXNRlLlfN93O/QfF4IxLuQg4OLITi6QvtOgVb/iHFwUGcE
TmLMSYgDd93cw+YXqMtZKztB7/1+4MjCYxUQs=
X-Gm-Message-State: AOJu0Yy5DBCExZB2/PXGZJRbipzjPKFQEpdnHvMwkbCJd6Bd/xuvCeDb
JGGsOxfyFXeHYd0J3nPGOg==
X-Google-Smtp-Source: AGHT+IGQyWQO69p9mhCHt5N5NbKLfb9Ij9fgRFGjk+UJNpRo3S9VPDV6pXXucyU0xAL3AiT5jNtO16w=
X-Received: by 2002:a25:fb02:0:b0:664:f31a:2be0 with SMTP id u2-20020a25fb02000000b00664f31a2be0mr13538287ybg.36.1713373420812;
Wed, 16 Apr 2025 09:23:40 -0700 (PDT)
From: "John Doe" <sender@example.com>
To: recipient@example.org
Subject: Sample email for parsing exercises
Date: Wed, 16 Apr 2025 12:23:35 -0400
Message-ID: 7a8b9c0d1e2f3g4h5i6j@mail.example.com
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Thread-Index: AQHZpT2RwxyzABCDEFghijkLMNO=
Content-Language: en-US
X-Spam-Status: No, score=-0.8
X-Spam-Score: -0.8
X-Spam-Bar: -
X-Ham-Report: Spam detection software, running on the system "mailserver.example.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
X-Spam-Flag: NO
Hello,
This is a sample email that can be used for parsing exercises. The email includes all standard headers that would be present in a typical email message.
The content of this message is kept simple to focus on the structure and headers.
You can use this example to test email parsing scripts, to understand email format, or to demonstrate how email headers work.
Some key points about email headers:
They contain routing information
They show authentication results (DKIM, SPF)
They include sender and recipient details
They contain timestamps and unique identifiers
Feel free to modify this template as needed for your specific parsing requirements.
Regards,
John Doe
--
John Doe
Senior Developer
Example Corp
Phone: (555) 123-4567
"""
email_path = tmp_dir / "test_email.txt"
with open(email_path, "w") as f:
f.write(test_contents)
return email_path
@pytest.fixture
def sample_email_dir(tmp_dir):
# Include only the necessary meta data since we have validated single email parsing
sample_emails = [
"""
From: Test <test@something.org>
Date: Wed, 10 Apr 2025 12:23:35 -0400
""",
"""
From: Not a Test <not_a_test@something.org>
Date: Wed, 16 Apr 2024 08:23:35 -0400
""",
"""
From: "Test2" <test@something.org>
Date: Wed, 11 Apr 2025 12:23:35 -0400
""",
]
for i, email in enumerate(sample_emails):
with open(tmp_dir / f"{i}", "w") as f:
f.write(email)
return tmp_dir
@pytest.fixture
def sample_email_metadata():
return [
{"from": "John Doe <john.doe@example.com>", "date": "2025-01-01"},
{"from": "John Doe <john.doe@example.com>", "date": "2025-01-02"},
{"from": "Johnny Doe <john.doe@example.com>", "date": "2025-01-03"},
{"from": "J. Doe <john.doe@example.com>", "date": "2025-01-04"},
{"from": "Jane Smith <jane.smith@example.com>", "date": "2025-01-05"},
{"from": "Jane S. <jane.smith@example.com>", "date": "2025-01-06"},
{"from": "Alex Johnson <alex.johnson@example.com>", "date": "2025-01-07"},
{"from": "Alex J. <alex.johnson@example.com>", "date": "2025-01-08"},
{"from": "Sarah Williams <sarah@example.com>", "date": "2025-01-09"},
]