Improved coverage

This commit is contained in:
Antoine Nguyen
2026-02-02 17:04:53 +01:00
parent 8b007280e9
commit 73bdd44774
3 changed files with 47 additions and 2 deletions
+11 -2
View File
@@ -1,5 +1,6 @@
"""Mock objects."""
from modoboa.webmail import constants
from modoboa.webmail.tests import data as tests_data
@@ -43,7 +44,10 @@ class IMAP4Mock:
return "OK", [b"19"]
elif command == "FETCH":
uid = int(args[0])
data = tests_data.BODYSTRUCTURE_SAMPLE_WITH_FLAGS
if constants.CUSTOM_HEADER_SCHEDULED_ID.upper() in args[1]:
data = tests_data.BODYSTRUCTURE_SAMPLE_SCHEDULED
else:
data = tests_data.BODYSTRUCTURE_SAMPLE_WITH_FLAGS
if uid == 46931:
if args[1] == "(BODYSTRUCTURE)":
data = tests_data.BODYSTRUCTURE_ONLY_4
@@ -62,7 +66,12 @@ class IMAP4Mock:
if args[1] == "(BODYSTRUCTURE)":
data = tests_data.BODYSTRUCTURE_EMPTY_MAIL
elif "HEADER.FIELDS" in args[1]:
data = tests_data.BODYSTRUCTURE_EMPTY_MAIL_WITH_HEADERS
if constants.CUSTOM_HEADER_SCHEDULED_DATETIME.upper() in args[1]:
data = (
tests_data.BODYSTRUCTURE_EMPTY_MAIL_WITH_HEADERS_SCHEDULED
)
else:
data = tests_data.BODYSTRUCTURE_EMPTY_MAIL_WITH_HEADERS
else:
data = tests_data.EMPTY_BODY
elif uid == 3444:
+21
View File
@@ -110,6 +110,18 @@ BODYSTRUCTURE_SAMPLE_WITH_FLAGS = [
b")",
]
BODYSTRUCTURE_SAMPLE_SCHEDULED = [
(
b'19 (UID 19 FLAGS (\\Seen) RFC822.SIZE 100000 BODYSTRUCTURE (("text" "plain" ("charset" "ISO-8859-1" "format" "flowed") NIL NIL "7bit" 2 1 NIL NIL NIL NIL)("message" "rfc822" ("name*" "ISO-8859-1\'\'%5B%49%4E%53%43%52%49%50%54%49%4F%4E%5D%20%52%E9%63%E9%70%74%69%6F%6E%20%64%65%20%76%6F%74%72%65%20%64%6F%73%73%69%65%72%20%64%27%69%6E%73%63%72%69%70%74%69%6F%6E%20%46%72%65%65%20%48%61%75%74%20%44%E9%62%69%74") NIL NIL "8bit" 3632 ("Wed, 13 Dec 2006 20:30:02 +0100" {70}', # noqa
b"[INSCRIPTION] R\xe9c\xe9ption de votre dossier d'inscription Free Haut D\xe9bit",
), # noqa
(
b' (("Free Haut Debit" NIL "inscription" "freetelecom.fr")) (("Free Haut Debit" NIL "inscription" "freetelecom.fr")) ((NIL NIL "hautdebit" "freetelecom.fr")) ((NIL NIL "nguyen.antoine" "wanadoo.fr")) NIL NIL NIL "<20061213193125.9DA0919AC@dgroup2-2.proxad.net>") ("text" "plain" ("charset" "iso-8859-1") NIL NIL "8bit" 1428 38 NIL ("inline" NIL) NIL NIL) 76 NIL ("inline" ("filename*" "ISO-8859-1\'\'%5B%49%4E%53%43%52%49%50%54%49%4F%4E%5D%20%52%E9%63%E9%70%74%69%6F%6E%20%64%65%20%76%6F%74%72%65%20%64%6F%73%73%69%65%72%20%64%27%69%6E%73%63%72%69%70%74%69%6F%6E%20%46%72%65%65%20%48%61%75%74%20%44%E9%62%69%74")) NIL NIL) "mixed" ("boundary" "------------040706080908000209030901") NIL NIL NIL) BODY[HEADER.FIELDS (DATE FROM TO CC SUBJECT X-SCHEDULED-ID X-SCHEDULED-DATETIME)] {348}', # noqa
b"Date: Tue, 19 Dec 2006 19:50:13 +0100\r\nFrom: Antoine Nguyen <nguyen.antoine@wanadoo.fr>\r\nTo: Antoine Nguyen <tonio@koalabs.org>\r\nSubject: [Fwd: [INSCRIPTION] =?ISO-8859-1?Q?R=E9c=E9ption_de_votre_?=\r\n =?ISO-8859-1?Q?dossier_d=27inscription_Free_Haut_D=E9bit=5D?=\r\nX-Scheduled-ID: 1123\r\nX-Scheduled-Datetime: 2026-02-02T15:37:59.022298+00:00\r\n\r\n",
),
b")",
]
EMPTY_BODYSTRUCTURE = 'BODYSTRUCTURE (("text" "plain" ("charset" "us-ascii") NIL NIL "quoted-printable" 0 0 NIL NIL NIL NIL)("application" "zip" ("name" "hotmail.com!ngyn.org!1435428000!1435514400.zip") NIL NIL "base64" 978 NIL ("attachment" ("filename" "hotmail.com!ngyn.org!1435428000!1435514400.zip")) NIL NIL) "mixed" ("boundary" "--boundary_32281_b52cf564-2a50-4f96-aeb0-ef5f83b05463") NIL NIL NIL)'
BODYSTRUCTURE_EMPTY_MAIL = [bytes(f"33 (UID 33 {EMPTY_BODYSTRUCTURE})", "utf-8")]
@@ -123,6 +135,15 @@ BODYSTRUCTURE_EMPTY_MAIL_WITH_HEADERS = [
b")",
]
BODYSTRUCTURE_EMPTY_MAIL_WITH_HEADERS_SCHEDULED = [
(
bytes(f"33 (UID 33 {EMPTY_BODYSTRUCTURE}", "utf-8")
+ b" BODY[HEADER.FIELDS (FROM TO CC DATE SUBJECT X-SCHEDULED-DATETIME)] {293}",
b"From: <Service.client10@maaf.fr>\r\nTo: <TONIO@NGYN.ORG>\r\nCc: \r\nSubject: Notre contact du 28/12/2011 - 192175092\r\nDate: Wed, 28 Dec 2011 13:29:17 +0100\r\nMessage-ID: <CABY0dkJspTaFn7v-1OG1nc9M0Qxn+VUTpcXzxyGNBnSnZtqMrw@mail.gmail.com>\r\nX-Scheduled-Datetime: 2026-02-02T15:37:59.022298+00:00\r\n\r\n",
),
b")",
]
EMPTY_BODY = [(b"33 (UID 33 BODY[1] {0}", b""), b")"]
BODYSTRUCTURE_WITH_PDF = [
+15
View File
@@ -255,6 +255,11 @@ class UserEmailViewSetTestCase(WebmailTestCase):
self.assertEqual(response.status_code, 200)
self.assertTrue(response.json()["subject"].startswith("Fwd:"))
# Scheduled message
response = self.client.get(f"{url}?mailbox=Scheduled&mailid=33")
self.assertEqual(response.status_code, 200)
self.assertIn("scheduled_datetime", response.json())
def test_attachment(self):
self.authenticate()
url = reverse("v2:webmail-email-attachment")
@@ -445,6 +450,16 @@ class ScheduledMessageViewSetTestCase(WebmailTestCase):
account=self.user, scheduled_datetime=timezone.now()
)
def test_listmailbox(self):
self.authenticate()
url = reverse("v2:webmail-email-list")
response = self.client.get(f"{url}?mailbox=Scheduled")
self.assertEqual(response.status_code, 200)
content = response.json()
self.assertEqual(content["count"], 1)
self.assertEqual(content["results"][0]["scheduled_id"], 1123)
self.assertIn("scheduled_datetime_raw", content["results"][0])
def test_delete(self):
self.authenticate()
url = reverse("v2:webmail-scheduled-message-detail", args=[self.message.id])