seitime-frappe/frappe/email/test_smtp.py
0xsaif aa7ee1c6b9
refactor: force ipv4 localhost (#22394)
* reafctor: force ipv4 localhost

Replacing "localhost" with "127.0.0.1" in the codebase; sometimes the name localhost force-resolves to ipv6

* revert: leave localhost usage in oauth tests

Change not required.

---------

Co-authored-by: Ankush Menat <ankush@frappe.io>
2023-09-13 16:23:23 +05:30

88 lines
2.8 KiB
Python

# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors
# License: The MIT License
import frappe
from frappe.email.doctype.email_account.email_account import EmailAccount
from frappe.email.smtp import SMTPServer
from frappe.tests.utils import FrappeTestCase
class TestSMTP(FrappeTestCase):
def test_smtp_ssl_session(self):
for port in [None, 0, 465, "465"]:
make_server(port, 1, 0)
def test_smtp_tls_session(self):
for port in [None, 0, 587, "587"]:
make_server(port, 0, 1)
def test_get_email_account(self):
existing_email_accounts = frappe.get_all(
"Email Account", fields=["name", "enable_outgoing", "default_outgoing", "append_to", "use_imap"]
)
unset_details = {"enable_outgoing": 0, "default_outgoing": 0, "append_to": None, "use_imap": 0}
for email_account in existing_email_accounts:
frappe.db.set_value("Email Account", email_account["name"], unset_details)
# remove mail_server config so that test@example.com is not created
mail_server = frappe.conf.get("mail_server")
del frappe.conf["mail_server"]
frappe.local.outgoing_email_account = {}
frappe.local.outgoing_email_account = {}
# lowest preference given to email account with default incoming enabled
create_email_account(
email_id="default_outgoing_enabled@gmail.com",
password="password",
enable_outgoing=1,
default_outgoing=1,
)
self.assertEqual(EmailAccount.find_outgoing().email_id, "default_outgoing_enabled@gmail.com")
frappe.local.outgoing_email_account = {}
# highest preference given to email account with append_to matching
create_email_account(
email_id="append_to@gmail.com",
password="password",
enable_outgoing=1,
default_outgoing=1,
append_to="Blog Post",
)
self.assertEqual(
EmailAccount.find_outgoing(match_by_doctype="Blog Post").email_id, "append_to@gmail.com"
)
# add back the mail_server
frappe.conf["mail_server"] = mail_server
for email_account in existing_email_accounts:
set_details = {
"enable_outgoing": email_account["enable_outgoing"],
"default_outgoing": email_account["default_outgoing"],
"append_to": email_account["append_to"],
}
frappe.db.set_value("Email Account", email_account["name"], set_details)
def create_email_account(email_id, password, enable_outgoing, default_outgoing=0, append_to=None):
email_dict = {
"email_id": email_id,
"passsword": password,
"enable_outgoing": enable_outgoing,
"default_outgoing": default_outgoing,
"enable_incoming": 1,
"append_to": append_to,
"is_dummy_password": 1,
"smtp_server": "127.0.0.1",
"use_imap": 0,
}
email_account = frappe.new_doc("Email Account")
email_account.update(email_dict)
email_account.save()
def make_server(port, ssl, tls):
server = SMTPServer(server="smtp.gmail.com", port=port, use_ssl=ssl, use_tls=tls)
server.session