mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
More tests
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
"""Extra IMAPv4 utilities."""
|
||||
|
||||
import base64
|
||||
import email
|
||||
from functools import wraps
|
||||
import imaplib
|
||||
@@ -13,6 +12,7 @@ from django.conf import settings
|
||||
from django.utils.translation import gettext as _
|
||||
|
||||
from modoboa.lib import imap_utf7 # noqa
|
||||
from modoboa.lib import oauth2
|
||||
from modoboa.lib.exceptions import InternalError
|
||||
from modoboa.parameters import tools as param_tools
|
||||
|
||||
@@ -255,14 +255,7 @@ class IMAPconnector:
|
||||
raise ImapError(_(f"Connection to IMAP server failed: {error}")) from None
|
||||
|
||||
if not settings.WEBMAIL_DEV_MODE:
|
||||
token = (
|
||||
b"n,a="
|
||||
+ user.encode("utf-8")
|
||||
+ b",\001auth=Bearer "
|
||||
+ rawtoken.encode("utf-8")
|
||||
+ b"\001\001"
|
||||
)
|
||||
token = base64.b64encode(token)
|
||||
token = oauth2.build_oauthbearer_string(user, rawtoken)
|
||||
data = self._cmd("AUTHENTICATE", b"OAUTHBEARER", token)
|
||||
else:
|
||||
user = bytes(settings.WEBMAIL_DEV_USERNAME, "utf-8")
|
||||
|
||||
@@ -155,8 +155,13 @@ def send_mail(
|
||||
options.update({"use_tls": True})
|
||||
if conf["smtp_authentication"]:
|
||||
if not settings.WEBMAIL_DEV_MODE:
|
||||
# TODO: oauth2 auth
|
||||
pass
|
||||
options.update(
|
||||
{
|
||||
"backend": "modoboa.lib.smtp_backend.OAuthBearerEmailBackend",
|
||||
"username": request.user.email,
|
||||
"password": request.auth,
|
||||
}
|
||||
)
|
||||
else:
|
||||
options.update(
|
||||
{
|
||||
|
||||
@@ -125,6 +125,14 @@ BODYSTRUCTURE_EMPTY_MAIL_WITH_HEADERS = [
|
||||
|
||||
EMPTY_BODY = [(b"33 (UID 33 BODY[1] {0}", b""), b")"]
|
||||
|
||||
BODYSTRUCTURE_WITH_PDF = [
|
||||
(
|
||||
b'1000 (UID 3444 BODYSTRUCTURE (("text" "plain" ("charset" "utf-8") NIL NIL "7BIT" 123 4 NIL NIL NIL)("application" "pdf" ("name" "file.pdf") NIL NIL "base64" 789 NIL ("attachment" ("filename" "file.pdf")) NIL NIL) "mixed" ("boundary" "--boundary_32281_b52cf564-2a50-4f96-aeb0-ef5f83b05463") NIL NIL NIL) BODY[2] {752}',
|
||||
b"JVBERi0xLjQKJcfsj6IKMSAwIG9iago8PC9UeXBlIC9DYXRhbG9nCi9QYWdlcyAyIDAgUgo+PgplbmRvYmoKMiAwIG9iago8PC9UeXBlIC9QYWdlcwovS2lkcyBbMyAwIFJdCi9Db3VudCAxCj4+CmVuZG9iagozIDAgb2JqCjw8L1R5cGUgL1BhZ2UKL1BhcmVudCAyIDAgUgovUmVzb3VyY2VzIDw8L0ZvbnQgPDwKL0YxIDQgMCBSCj4+Cj4+Ci9Db250ZW50cyA1IDAgUgo+PgplbmRvYmoKNSAwIG9iago8PC9MZW5ndGggNzYKc3RyZWFtCkJUIApIZWxsbyBXb3JsZCENCkVUCmVuZHN0cmVhbQplbmRvYmoKNCAwIG9iago8PC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UcnVlVHlwZQovTmFtZSAvRjEKL0Jhc2VGb250IC9IZWx2ZXRpY2ENCj4+CmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDEgMDAwMDAgbiAKMDAwMDAwMDA2MCAwMDAwMCBuIAowMDAwMDAwMTIyIDAwMDAwIG4gCjAwMDAwMDAyMzAgMDAwMDAgbiAKMDAwMDAwMDM0MCAwMDAwMCBuIAp0cmFpbGVyCjw8Ci9TaXplIDYKL1Jvb3QgMSAwIFIKL0luZm8gNiAwIFIKPj4Kc3RhcnR4cmVmCjQ1MwolJUVPRgo=",
|
||||
),
|
||||
b")",
|
||||
]
|
||||
|
||||
COMPLETE_MAIL = [
|
||||
(
|
||||
b"109 (UID 133872 BODY[] {2504}",
|
||||
|
||||
@@ -93,6 +93,8 @@ class IMAP4Mock:
|
||||
data = tests_data.BODYSTRUCTURE_EMPTY_MAIL_WITH_HEADERS
|
||||
else:
|
||||
data = tests_data.EMPTY_BODY
|
||||
elif uid == 3444:
|
||||
data = tests_data.BODYSTRUCTURE_WITH_PDF
|
||||
elif uid == 133872:
|
||||
data = tests_data.COMPLETE_MAIL
|
||||
return "OK", data
|
||||
@@ -296,6 +298,11 @@ class UserEmailViewSetTestCase(WebmailTestCase):
|
||||
url = reverse("v2:webmail-email-attachment")
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, 404)
|
||||
response = self.client.get(f"{url}?mailbox=INBOX&mailid=3444&partnum=2")
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(
|
||||
response.headers["Content-Disposition"], "attachment; filename=attachment"
|
||||
)
|
||||
|
||||
|
||||
class ComposeSessionViewSetTestCase(WebmailTestCase):
|
||||
|
||||
Reference in New Issue
Block a user