mirror of
https://github.com/zulip/zulip.git
synced 2025-11-13 02:17:19 +00:00
refactor: Separate get channel email token logic from email encoding.
This commit extracts the logic for creating or retrieving a channel email token into a dedicated `get_channel_email_token` function. This improves code clarity by decoupling token generation from the email encoding process.
This commit is contained in:
committed by
Tim Abbott
parent
864a2a067e
commit
2bb4b70121
@@ -48,17 +48,17 @@ def get_email_gateway_message_string_from_address(address: str) -> str:
|
||||
return msg_string
|
||||
|
||||
|
||||
def encode_email_address(stream: Stream, show_sender: bool = False) -> str:
|
||||
def get_channel_email_token(stream: Stream) -> str:
|
||||
channel_email_address, ignored = ChannelEmailAddress.objects.get_or_create(
|
||||
realm=stream.realm,
|
||||
channel=stream,
|
||||
creator=stream.creator,
|
||||
sender=get_system_bot(settings.EMAIL_GATEWAY_BOT, stream.realm_id),
|
||||
)
|
||||
return encode_email_address_helper(stream.name, channel_email_address.email_token, show_sender)
|
||||
return channel_email_address.email_token
|
||||
|
||||
|
||||
def encode_email_address_helper(name: str, email_token: str, show_sender: bool = False) -> str:
|
||||
def encode_email_address(name: str, email_token: str, show_sender: bool = False) -> str:
|
||||
# Some deployments may not use the email gateway
|
||||
if settings.EMAIL_GATEWAY_PATTERN == "":
|
||||
return ""
|
||||
|
||||
@@ -11,7 +11,7 @@ from django.core.management.base import CommandError, CommandParser
|
||||
from typing_extensions import override
|
||||
|
||||
from zerver.lib.email_mirror import mirror_email_message
|
||||
from zerver.lib.email_mirror_helpers import encode_email_address
|
||||
from zerver.lib.email_mirror_helpers import encode_email_address, get_channel_email_token
|
||||
from zerver.lib.management import ZulipBaseCommand
|
||||
from zerver.models import Realm
|
||||
from zerver.models.realms import get_realm
|
||||
@@ -111,6 +111,7 @@ Example:
|
||||
|
||||
def _prepare_message(self, message: EmailMessage, realm: Realm, stream_name: str) -> None:
|
||||
stream = get_stream(stream_name, realm)
|
||||
email_token = get_channel_email_token(stream)
|
||||
|
||||
# The block below ensures that the imported email message doesn't have any recipient-like
|
||||
# headers that are inconsistent with the recipient we want (the stream address).
|
||||
@@ -125,8 +126,8 @@ Example:
|
||||
for header in recipient_headers:
|
||||
if header in message:
|
||||
del message[header]
|
||||
message[header] = encode_email_address(stream)
|
||||
message[header] = encode_email_address(stream.name, email_token)
|
||||
|
||||
if "To" in message:
|
||||
del message["To"]
|
||||
message["To"] = encode_email_address(stream)
|
||||
message["To"] = encode_email_address(stream.name, email_token)
|
||||
|
||||
@@ -31,6 +31,7 @@ from zerver.lib.email_mirror_helpers import (
|
||||
ZulipEmailForwardError,
|
||||
decode_email_address,
|
||||
encode_email_address,
|
||||
get_channel_email_token,
|
||||
get_email_gateway_message_string_from_address,
|
||||
)
|
||||
from zerver.lib.email_notifications import convert_html_to_markdown
|
||||
@@ -38,7 +39,7 @@ from zerver.lib.send_email import FromAddress
|
||||
from zerver.lib.streams import ensure_stream
|
||||
from zerver.lib.test_classes import ZulipTestCase
|
||||
from zerver.lib.test_helpers import mock_queue_publish, most_recent_message, most_recent_usermessage
|
||||
from zerver.models import Attachment, ChannelEmailAddress, Recipient, Stream, UserProfile
|
||||
from zerver.models import Attachment, Recipient, Stream, UserProfile
|
||||
from zerver.models.groups import NamedUserGroup, SystemGroups
|
||||
from zerver.models.messages import Message
|
||||
from zerver.models.realms import get_realm
|
||||
@@ -74,8 +75,8 @@ class TestEncodeDecode(ZulipTestCase):
|
||||
realm = get_realm("zulip")
|
||||
stream_name = "dev. help"
|
||||
stream = ensure_stream(realm, stream_name, acting_user=None)
|
||||
email_address = encode_email_address(stream)
|
||||
email_token = ChannelEmailAddress.objects.get(channel=stream).email_token
|
||||
email_token = get_channel_email_token(stream)
|
||||
email_address = encode_email_address(stream.name, email_token)
|
||||
self.assertEqual(email_address, f"dev-help.{email_token}@testserver")
|
||||
|
||||
# The default form of the email address (with an option - "include-footer"):
|
||||
@@ -130,8 +131,8 @@ class TestEncodeDecode(ZulipTestCase):
|
||||
realm = get_realm("zulip")
|
||||
stream_name = "Тестовы some ascii letters"
|
||||
stream = ensure_stream(realm, stream_name, acting_user=None)
|
||||
email_address = encode_email_address(stream)
|
||||
email_token = ChannelEmailAddress.objects.get(channel=stream).email_token
|
||||
email_token = get_channel_email_token(stream)
|
||||
email_address = encode_email_address(stream.name, email_token)
|
||||
|
||||
msg_string = get_email_gateway_message_string_from_address(email_address)
|
||||
parts = msg_string.split("+")
|
||||
@@ -146,13 +147,14 @@ class TestEncodeDecode(ZulipTestCase):
|
||||
|
||||
asciiable_stream_name = "ąężć"
|
||||
stream = ensure_stream(realm, asciiable_stream_name, acting_user=None)
|
||||
email_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
email_address = encode_email_address(stream.name, email_token)
|
||||
self.assertTrue(email_address.startswith("aezc."))
|
||||
|
||||
def test_decode_ignores_stream_name(self) -> None:
|
||||
stream = get_stream("Denmark", get_realm("zulip"))
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = ChannelEmailAddress.objects.get(channel=stream).email_token
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
stream_to_address = stream_to_address.replace("denmark", "Some_name")
|
||||
|
||||
# get the email_token:
|
||||
@@ -161,8 +163,8 @@ class TestEncodeDecode(ZulipTestCase):
|
||||
|
||||
def test_encode_with_show_sender(self) -> None:
|
||||
stream = get_stream("Denmark", get_realm("zulip"))
|
||||
stream_to_address = encode_email_address(stream, show_sender=True)
|
||||
email_token = ChannelEmailAddress.objects.get(channel=stream).email_token
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token, show_sender=True)
|
||||
|
||||
token, options = decode_email_address(stream_to_address)
|
||||
self._assert_options(options, show_sender=True)
|
||||
@@ -170,8 +172,8 @@ class TestEncodeDecode(ZulipTestCase):
|
||||
|
||||
def test_decode_prefer_text_options(self) -> None:
|
||||
stream = get_stream("Denmark", get_realm("zulip"))
|
||||
encode_email_address(stream)
|
||||
email_token = ChannelEmailAddress.objects.get(channel=stream).email_token
|
||||
email_token = get_channel_email_token(stream)
|
||||
encode_email_address(stream.name, email_token)
|
||||
address_prefer_text = f"Denmark.{email_token}.prefer-text@testserver"
|
||||
address_prefer_html = f"Denmark.{email_token}.prefer-html@testserver"
|
||||
|
||||
@@ -236,7 +238,8 @@ class TestStreamEmailMessages(ZulipTestCase):
|
||||
def create_incoming_valid_message(
|
||||
self, msgtext: str, stream: Stream, include_quotes: bool
|
||||
) -> EmailMessage:
|
||||
address = Address(addr_spec=encode_email_address(stream))
|
||||
email_token = get_channel_email_token(stream)
|
||||
address = Address(addr_spec=encode_email_address(stream.name, email_token))
|
||||
email_username = address.username + "+show-sender"
|
||||
if include_quotes:
|
||||
email_username += "+include-quotes"
|
||||
@@ -258,7 +261,8 @@ class TestStreamEmailMessages(ZulipTestCase):
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
|
||||
incoming_valid_message = EmailMessage()
|
||||
incoming_valid_message.set_content("TestStreamEmailMessages body")
|
||||
@@ -286,7 +290,8 @@ class TestStreamEmailMessages(ZulipTestCase):
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
|
||||
incoming_valid_message = EmailMessage()
|
||||
incoming_valid_message.set_content("TestStreamEmailMessages body")
|
||||
@@ -313,7 +318,8 @@ class TestStreamEmailMessages(ZulipTestCase):
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
|
||||
incoming_valid_message = EmailMessage()
|
||||
incoming_valid_message.set_content("TestStreamEmailMessages body")
|
||||
@@ -340,7 +346,8 @@ class TestStreamEmailMessages(ZulipTestCase):
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
|
||||
incoming_valid_message = EmailMessage()
|
||||
incoming_valid_message.set_content("TestStreamEmailMessages body")
|
||||
@@ -371,7 +378,8 @@ class TestStreamEmailMessages(ZulipTestCase):
|
||||
self.subscribe(user_profile, "private_stream")
|
||||
stream = get_stream("private_stream", user_profile.realm)
|
||||
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
|
||||
incoming_valid_message = EmailMessage()
|
||||
incoming_valid_message.set_content("TestStreamEmailMessages body")
|
||||
@@ -397,9 +405,10 @@ class TestStreamEmailMessages(ZulipTestCase):
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
|
||||
# stream address is angle-addr within multiple addresses
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_addresses = [
|
||||
"A.N. Other <another@example.org>",
|
||||
f"Denmark <{encode_email_address(stream)}>",
|
||||
f"Denmark <{encode_email_address(stream.name, email_token)}>",
|
||||
]
|
||||
|
||||
incoming_valid_message = EmailMessage()
|
||||
@@ -513,7 +522,8 @@ and other things
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
|
||||
address = Address(addr_spec=encode_email_address(stream))
|
||||
email_token = get_channel_email_token(stream)
|
||||
address = Address(addr_spec=encode_email_address(stream.name, email_token))
|
||||
email_username = address.username + "+show-sender"
|
||||
stream_to_address = Address(username=email_username, domain=address.domain).addr_spec
|
||||
|
||||
@@ -544,7 +554,8 @@ and other things
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
|
||||
address = Address(addr_spec=encode_email_address(stream))
|
||||
email_token = get_channel_email_token(stream)
|
||||
address = Address(addr_spec=encode_email_address(stream.name, email_token))
|
||||
email_username = address.username + "+include-footer"
|
||||
stream_to_address = Address(username=email_username, domain=address.domain).addr_spec
|
||||
|
||||
@@ -572,7 +583,8 @@ and other things
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
|
||||
address = Address(addr_spec=encode_email_address(stream))
|
||||
email_token = get_channel_email_token(stream)
|
||||
address = Address(addr_spec=encode_email_address(stream.name, email_token))
|
||||
email_username = address.username + "+include-quotes"
|
||||
stream_to_address = Address(username=email_username, domain=address.domain).addr_spec
|
||||
|
||||
@@ -603,7 +615,8 @@ class TestEmailMirrorMessagesWithAttachments(ZulipTestCase):
|
||||
self.login_user(user_profile)
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
|
||||
incoming_valid_message = EmailMessage()
|
||||
incoming_valid_message.set_content("Test body")
|
||||
@@ -648,7 +661,8 @@ class TestEmailMirrorMessagesWithAttachments(ZulipTestCase):
|
||||
self.login_user(user_profile)
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
|
||||
incoming_valid_message = EmailMessage()
|
||||
incoming_valid_message.set_content("Test body")
|
||||
@@ -686,7 +700,8 @@ class TestEmailMirrorMessagesWithAttachments(ZulipTestCase):
|
||||
self.login_user(user_profile)
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
|
||||
incoming_valid_message = EmailMessage()
|
||||
incoming_valid_message.set_content("a" * settings.MAX_MESSAGE_LENGTH)
|
||||
@@ -728,7 +743,8 @@ class TestEmailMirrorMessagesWithAttachments(ZulipTestCase):
|
||||
self.login_user(user_profile)
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
|
||||
incoming_valid_message = EmailMessage()
|
||||
incoming_valid_message.set_content("Test body")
|
||||
@@ -771,7 +787,8 @@ class TestEmailMirrorMessagesWithAttachments(ZulipTestCase):
|
||||
self.login_user(user_profile)
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
|
||||
incoming_valid_message = EmailMessage()
|
||||
incoming_valid_message.set_content("Test body")
|
||||
@@ -817,7 +834,8 @@ class TestEmailMirrorMessagesWithAttachments(ZulipTestCase):
|
||||
self.login_user(user_profile)
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
|
||||
incoming_valid_message = EmailMessage()
|
||||
incoming_valid_message.set_content("Test body")
|
||||
@@ -847,8 +865,8 @@ class TestEmailMirrorMessagesWithAttachments(ZulipTestCase):
|
||||
self.login_user(user_profile)
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
encode_email_address(stream)
|
||||
email_token = ChannelEmailAddress.objects.get(channel=stream).email_token
|
||||
email_token = get_channel_email_token(stream)
|
||||
encode_email_address(stream.name, email_token)
|
||||
stream_address = f"Denmark.{email_token}@testserver"
|
||||
stream_address_prefer_html = f"Denmark.{email_token}.prefer-html@testserver"
|
||||
|
||||
@@ -882,8 +900,8 @@ class TestEmailMirrorMessagesWithAttachments(ZulipTestCase):
|
||||
self.login_user(user_profile)
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
encode_email_address(stream)
|
||||
email_token = ChannelEmailAddress.objects.get(channel=stream).email_token
|
||||
email_token = get_channel_email_token(stream)
|
||||
encode_email_address(stream.name, email_token)
|
||||
stream_address_prefer_html = f"Denmark.{email_token}.prefer-html@testserver"
|
||||
|
||||
text = "Test message"
|
||||
@@ -951,7 +969,8 @@ class TestStreamEmailMessagesEmptyBody(ZulipTestCase):
|
||||
self.login_user(user_profile)
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
|
||||
# empty body
|
||||
incoming_valid_message = EmailMessage()
|
||||
@@ -974,7 +993,8 @@ class TestStreamEmailMessagesEmptyBody(ZulipTestCase):
|
||||
self.login_user(user_profile)
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
# No textual body
|
||||
incoming_valid_message = EmailMessage()
|
||||
with open(
|
||||
@@ -1007,7 +1027,8 @@ class TestStreamEmailMessagesEmptyBody(ZulipTestCase):
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
headers = {}
|
||||
headers["Reply-To"] = self.example_email("othello")
|
||||
|
||||
@@ -1393,7 +1414,8 @@ class TestEmptyGatewaySetting(ZulipTestCase):
|
||||
stream = get_stream("Denmark", get_realm("zulip"))
|
||||
|
||||
with self.settings(EMAIL_GATEWAY_PATTERN=""):
|
||||
test_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
test_address = encode_email_address(stream.name, email_token)
|
||||
self.assertEqual(test_address, "")
|
||||
|
||||
|
||||
@@ -1418,7 +1440,8 @@ class TestReplyExtraction(ZulipTestCase):
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
text = """Reply
|
||||
|
||||
-----Original Message-----
|
||||
@@ -1455,7 +1478,8 @@ class TestReplyExtraction(ZulipTestCase):
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
html = """
|
||||
<html>
|
||||
<body>
|
||||
@@ -1504,7 +1528,8 @@ class TestScriptMTA(ZulipTestCase):
|
||||
|
||||
sender = self.example_email("hamlet")
|
||||
stream = get_stream("Denmark", get_realm("zulip"))
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
|
||||
mail_template = self.fixture_data("simple.txt", type="email")
|
||||
mail = mail_template.format(stream_to_address=stream_to_address, sender=sender)
|
||||
@@ -1520,7 +1545,8 @@ class TestScriptMTA(ZulipTestCase):
|
||||
|
||||
sender = self.example_email("hamlet")
|
||||
stream = get_stream("Denmark", get_realm("zulip"))
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
mail_template = self.fixture_data("simple.txt", type="email")
|
||||
mail = mail_template.format(stream_to_address=stream_to_address, sender=sender)
|
||||
p = subprocess.run(
|
||||
@@ -1587,13 +1613,15 @@ class TestEmailMirrorTornadoView(ZulipTestCase):
|
||||
|
||||
def test_success_stream(self) -> None:
|
||||
stream = get_stream("Denmark", get_realm("zulip"))
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
result = self.send_offline_message(stream_to_address, self.example_user("hamlet"))
|
||||
self.assert_json_success(result)
|
||||
|
||||
def test_error_to_stream_with_wrong_address(self) -> None:
|
||||
stream = get_stream("Denmark", get_realm("zulip"))
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
# get the email_token:
|
||||
token = decode_email_address(stream_to_address)[0]
|
||||
stream_to_address = stream_to_address.replace(token, "Wrong_token")
|
||||
@@ -1607,7 +1635,8 @@ class TestEmailMirrorTornadoView(ZulipTestCase):
|
||||
|
||||
def test_success_to_stream_with_good_token_wrong_stream_name(self) -> None:
|
||||
stream = get_stream("Denmark", get_realm("zulip"))
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
stream_to_address = stream_to_address.replace("denmark", "Wrong_name")
|
||||
|
||||
result = self.send_offline_message(stream_to_address, self.example_user("hamlet"))
|
||||
@@ -1641,7 +1670,8 @@ class TestStreamEmailMessagesSubjectStripping(ZulipTestCase):
|
||||
self.login_user(user_profile)
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
incoming_valid_message = EmailMessage()
|
||||
incoming_valid_message.set_content("TestStreamEmailMessages body")
|
||||
incoming_valid_message["Subject"] = "Re: Fwd: Re: AW: Test"
|
||||
@@ -1683,7 +1713,8 @@ class TestContentTypeUnspecifiedCharset(ZulipTestCase):
|
||||
self.login_user(user_profile)
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
|
||||
del incoming_message["To"]
|
||||
incoming_message["To"] = stream_to_address
|
||||
@@ -1708,7 +1739,8 @@ class TestContentTypeInvalidCharset(ZulipTestCase):
|
||||
self.login_user(user_profile)
|
||||
self.subscribe(user_profile, "Denmark")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
|
||||
del incoming_message["To"]
|
||||
incoming_message["To"] = stream_to_address
|
||||
@@ -1740,7 +1772,8 @@ class TestEmailMirrorLogAndReport(ZulipTestCase):
|
||||
self.login_user(user_profile)
|
||||
self.subscribe(user_profile, "errors")
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
|
||||
incoming_valid_message = EmailMessage()
|
||||
incoming_valid_message.set_content("Test body")
|
||||
@@ -1772,7 +1805,8 @@ class TestEmailMirrorLogAndReport(ZulipTestCase):
|
||||
stream = get_stream("Denmark", user_profile.realm)
|
||||
|
||||
# Test for a stream address:
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
address = Address(addr_spec=stream_to_address)
|
||||
scrubbed_stream_address = Address(
|
||||
username="X" * len(address.username), domain=address.domain
|
||||
|
||||
@@ -17,7 +17,7 @@ from django.test import override_settings
|
||||
from typing_extensions import override
|
||||
|
||||
from zerver.lib.email_mirror import RateLimitedRealmMirror
|
||||
from zerver.lib.email_mirror_helpers import encode_email_address
|
||||
from zerver.lib.email_mirror_helpers import encode_email_address, get_channel_email_token
|
||||
from zerver.lib.queue import MAX_REQUEST_RETRIES
|
||||
from zerver.lib.rate_limiter import RateLimiterLockingError
|
||||
from zerver.lib.remote_server import PushNotificationBouncerRetryLaterError
|
||||
@@ -574,7 +574,8 @@ class WorkerTest(ZulipTestCase):
|
||||
def test_mirror_worker(self, mock_mirror_email: MagicMock) -> None:
|
||||
fake_client = FakeClient()
|
||||
stream = get_stream("Denmark", get_realm("zulip"))
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
data = [
|
||||
dict(
|
||||
msg_base64=base64.b64encode(b"\xf3test").decode(),
|
||||
@@ -599,7 +600,8 @@ class WorkerTest(ZulipTestCase):
|
||||
realm = get_realm("zulip")
|
||||
RateLimitedRealmMirror(realm).clear_history()
|
||||
stream = get_stream("Denmark", realm)
|
||||
stream_to_address = encode_email_address(stream)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_to_address = encode_email_address(stream.name, email_token)
|
||||
data = [
|
||||
dict(
|
||||
msg_base64=base64.b64encode(b"\xf3test").decode(),
|
||||
|
||||
@@ -55,7 +55,7 @@ from zerver.lib.default_streams import (
|
||||
get_default_stream_ids_for_realm,
|
||||
get_slim_realm_default_streams,
|
||||
)
|
||||
from zerver.lib.email_mirror_helpers import encode_email_address_helper
|
||||
from zerver.lib.email_mirror_helpers import encode_email_address, get_channel_email_token
|
||||
from zerver.lib.exceptions import JsonableError
|
||||
from zerver.lib.message import UnreadStreamInfo, aggregate_unread_data, get_raw_unread_data
|
||||
from zerver.lib.response import json_success
|
||||
@@ -107,7 +107,6 @@ from zerver.lib.types import (
|
||||
from zerver.lib.user_groups import is_user_in_group
|
||||
from zerver.models import (
|
||||
Attachment,
|
||||
ChannelEmailAddress,
|
||||
DefaultStream,
|
||||
DefaultStreamGroup,
|
||||
Message,
|
||||
@@ -6164,10 +6163,8 @@ class GetStreamsTest(ZulipTestCase):
|
||||
denmark_stream = get_stream("Denmark", realm)
|
||||
result = self.client_get(f"/json/streams/{denmark_stream.id}/email_address")
|
||||
json = self.assert_json_success(result)
|
||||
email_token = ChannelEmailAddress.objects.get(channel=denmark_stream).email_token
|
||||
denmark_email = encode_email_address_helper(
|
||||
denmark_stream.name, email_token, show_sender=True
|
||||
)
|
||||
email_token = get_channel_email_token(denmark_stream)
|
||||
denmark_email = encode_email_address(denmark_stream.name, email_token, show_sender=True)
|
||||
self.assertEqual(json["email"], denmark_email)
|
||||
|
||||
self.login("polonius")
|
||||
|
||||
@@ -48,7 +48,7 @@ from zerver.decorator import (
|
||||
require_realm_admin,
|
||||
)
|
||||
from zerver.lib.default_streams import get_default_stream_ids_for_realm
|
||||
from zerver.lib.email_mirror_helpers import encode_email_address
|
||||
from zerver.lib.email_mirror_helpers import encode_email_address, get_channel_email_token
|
||||
from zerver.lib.exceptions import (
|
||||
CannotManageDefaultChannelError,
|
||||
JsonableError,
|
||||
@@ -1133,6 +1133,7 @@ def get_stream_email_address(
|
||||
user_profile,
|
||||
stream_id,
|
||||
)
|
||||
stream_email = encode_email_address(stream, show_sender=True)
|
||||
email_token = get_channel_email_token(stream)
|
||||
stream_email = encode_email_address(stream.name, email_token, show_sender=True)
|
||||
|
||||
return json_success(request, data={"email": stream_email})
|
||||
|
||||
Reference in New Issue
Block a user