mirror of
https://github.com/zulip/zulip.git
synced 2025-11-01 20:44:04 +00:00
tests: Add coverage for email/stream encode/decode logic.
This commit is contained in:
@@ -22,6 +22,8 @@ from zerver.models import (
|
||||
|
||||
from zerver.lib.actions import (
|
||||
encode_email_address,
|
||||
ensure_stream,
|
||||
decode_email_address,
|
||||
)
|
||||
from zerver.lib.email_mirror import (
|
||||
process_message, process_stream_message, ZulipEmailForwardError,
|
||||
@@ -47,6 +49,39 @@ from django.conf import settings
|
||||
|
||||
from typing import Any, Callable, Dict, Mapping, Union, Optional
|
||||
|
||||
class TestEncodeDecode(ZulipTestCase):
|
||||
def test_encode_decode(self) -> None:
|
||||
realm = get_realm('zulip')
|
||||
stream_name = 'dev. help'
|
||||
stream = ensure_stream(realm, stream_name)
|
||||
email_address = encode_email_address(stream)
|
||||
self.assertTrue(email_address.startswith('dev%0046%0032help'))
|
||||
self.assertTrue(email_address.endswith('@testserver'))
|
||||
tup = decode_email_address(email_address)
|
||||
assert tup is not None
|
||||
(decoded_stream_name, token) = tup
|
||||
self.assertEqual(decoded_stream_name, stream_name)
|
||||
self.assertEqual(token, stream.email_token)
|
||||
|
||||
email_address = email_address.replace('+', '.')
|
||||
tup = decode_email_address(email_address)
|
||||
assert tup is not None
|
||||
(decoded_stream_name, token) = tup
|
||||
self.assertEqual(decoded_stream_name, stream_name)
|
||||
self.assertEqual(token, stream.email_token)
|
||||
|
||||
email_address = email_address.replace('@testserver', '@zulip.org')
|
||||
self.assertEqual(decode_email_address(email_address), None)
|
||||
|
||||
with self.settings(EMAIL_GATEWAY_EXTRA_PATTERN_HACK='@zulip.org'):
|
||||
tup = decode_email_address(email_address)
|
||||
assert tup is not None
|
||||
(decoded_stream_name, token) = tup
|
||||
self.assertEqual(decoded_stream_name, stream_name)
|
||||
self.assertEqual(token, stream.email_token)
|
||||
|
||||
self.assertEqual(decode_email_address('bogus'), None)
|
||||
|
||||
class TestEmailMirrorLibrary(ZulipTestCase):
|
||||
def test_get_missed_message_token(self) -> None:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user