diff --git a/zerver/lib/test_classes.py b/zerver/lib/test_classes.py
index 71faf60673..36acb7d947 100644
--- a/zerver/lib/test_classes.py
+++ b/zerver/lib/test_classes.py
@@ -430,14 +430,16 @@ class ZulipTestCase(TestCase):
return self.encode_credentials(uuid, api_key)
+ def encode_user(self, user: UserProfile) -> str:
+ email = user.delivery_email
+ api_key = user.api_key
+ return self.encode_credentials(email, api_key)
+
def encode_email(self, email: str, realm: str="zulip") -> str:
+ # TODO: use encode_user where possible
assert '@' in email
- if email in self.API_KEYS:
- api_key = self.API_KEYS[email]
- else:
- user = get_user_by_delivery_email(email, get_realm(realm))
- api_key = get_api_key(user)
- self.API_KEYS[email] = api_key
+ user = get_user_by_delivery_email(email, get_realm(realm))
+ api_key = get_api_key(user)
return self.encode_credentials(email, api_key)
@@ -456,20 +458,20 @@ class ZulipTestCase(TestCase):
kwargs['HTTP_AUTHORIZATION'] = self.encode_uuid(identifier)
return self.client_post(*args, **kwargs)
- def api_get(self, identifier: str, *args: Any, **kwargs: Any) -> HttpResponse:
- kwargs['HTTP_AUTHORIZATION'] = self.encode_email(identifier, kwargs.get('subdomain', 'zulip'))
+ def api_get(self, user: UserProfile, *args: Any, **kwargs: Any) -> HttpResponse:
+ kwargs['HTTP_AUTHORIZATION'] = self.encode_user(user)
return self.client_get(*args, **kwargs)
- def api_post(self, identifier: str, *args: Any, **kwargs: Any) -> HttpResponse:
- kwargs['HTTP_AUTHORIZATION'] = self.encode_email(identifier, kwargs.get('subdomain', 'zulip'))
+ def api_post(self, user: UserProfile, *args: Any, **kwargs: Any) -> HttpResponse:
+ kwargs['HTTP_AUTHORIZATION'] = self.encode_user(user)
return self.client_post(*args, **kwargs)
- def api_patch(self, identifier: str, *args: Any, **kwargs: Any) -> HttpResponse:
- kwargs['HTTP_AUTHORIZATION'] = self.encode_email(identifier, kwargs.get('subdomain', 'zulip'))
+ def api_patch(self, user: UserProfile, *args: Any, **kwargs: Any) -> HttpResponse:
+ kwargs['HTTP_AUTHORIZATION'] = self.encode_user(user)
return self.client_patch(*args, **kwargs)
- def api_delete(self, identifier: str, *args: Any, **kwargs: Any) -> HttpResponse:
- kwargs['HTTP_AUTHORIZATION'] = self.encode_email(identifier, kwargs.get('subdomain', 'zulip'))
+ def api_delete(self, user: UserProfile, *args: Any, **kwargs: Any) -> HttpResponse:
+ kwargs['HTTP_AUTHORIZATION'] = self.encode_user(user)
return self.client_delete(*args, **kwargs)
def get_streams(self, user_profile: UserProfile) -> List[str]:
@@ -696,7 +698,7 @@ class ZulipTestCase(TestCase):
post_data = {'subscriptions': ujson.dumps([{"name": stream} for stream in streams]),
'invite_only': ujson.dumps(invite_only)}
post_data.update(extra_post_data)
- result = self.api_post(user.email, "/api/v1/users/me/subscriptions", post_data, **kwargs)
+ result = self.api_post(user, "/api/v1/users/me/subscriptions", post_data, **kwargs)
return result
def check_user_subscribed_only_to_streams(self, user_name: str,
@@ -865,8 +867,8 @@ class WebhookTestCase(ZulipTestCase):
super().setUp()
self.url = self.build_webhook_url()
- def api_stream_message(self, email: str, *args: Any, **kwargs: Any) -> HttpResponse:
- kwargs['HTTP_AUTHORIZATION'] = self.encode_email(email)
+ def api_stream_message(self, user: UserProfile, *args: Any, **kwargs: Any) -> HttpResponse:
+ kwargs['HTTP_AUTHORIZATION'] = self.encode_user(user)
return self.send_and_test_stream_message(*args, **kwargs)
def send_and_test_stream_message(self, fixture_name: str, expected_topic: Optional[str]=None,
diff --git a/zerver/tests/test_bots.py b/zerver/tests/test_bots.py
index cf15d3fd84..6def44679b 100644
--- a/zerver/tests/test_bots.py
+++ b/zerver/tests/test_bots.py
@@ -1179,7 +1179,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
# Make sure the bot cannot create their own default stream.
url = "/api/v1/bots/{}".format(bot_user.id)
- result = self.api_patch(bot_user.email, url, bot_info)
+ result = self.api_patch(bot_user, url, bot_info)
self.assert_json_error_contains(result, 'endpoint does not accept')
def test_patch_bot_events_register_stream_allowed(self) -> None:
diff --git a/zerver/tests/test_bugdown.py b/zerver/tests/test_bugdown.py
index d02f652407..f9ff086568 100644
--- a/zerver/tests/test_bugdown.py
+++ b/zerver/tests/test_bugdown.py
@@ -1970,7 +1970,7 @@ class BugdownApiTests(ZulipTestCase):
def test_render_message_api(self) -> None:
content = 'That is a **bold** statement'
result = self.api_post(
- self.example_email("othello"),
+ self.example_user("othello"),
'/api/v1/messages/render',
dict(content=content)
)
@@ -1982,7 +1982,7 @@ class BugdownApiTests(ZulipTestCase):
"""Determines whether we're correctly passing the realm context"""
content = 'This mentions #**Denmark** and @**King Hamlet**.'
result = self.api_post(
- self.example_email("othello"),
+ self.example_user("othello"),
'/api/v1/messages/render',
dict(content=content)
)
diff --git a/zerver/tests/test_decorators.py b/zerver/tests/test_decorators.py
index b5935b373a..f8b23d68a9 100644
--- a/zerver/tests/test_decorators.py
+++ b/zerver/tests/test_decorators.py
@@ -1014,7 +1014,7 @@ class DeactivatedRealmTest(ZulipTestCase):
"to": self.example_email("othello")})
self.assert_json_error_contains(result, "has been deactivated", status_code=400)
- result = self.api_post(self.example_email("hamlet"),
+ result = self.api_post(self.example_user("hamlet"),
"/api/v1/messages", {"type": "private",
"content": "Test message",
"client": "test suite",
@@ -1142,7 +1142,7 @@ class InactiveUserTest(ZulipTestCase):
"to": self.example_email("othello")})
self.assert_json_error_contains(result, "Account is deactivated", status_code=400)
- result = self.api_post(self.example_email("hamlet"),
+ result = self.api_post(self.example_user("hamlet"),
"/api/v1/messages", {"type": "private",
"content": "Test message",
"client": "test suite",
@@ -1238,20 +1238,16 @@ class InactiveUserTest(ZulipTestCase):
class TestIncomingWebhookBot(ZulipTestCase):
- def setUp(self) -> None:
- super().setUp()
- zulip_realm = get_realm('zulip')
- self.webhook_bot = get_user('webhook-bot@zulip.com', zulip_realm)
-
def test_webhook_bot_permissions(self) -> None:
- result = self.api_post("webhook-bot@zulip.com",
+ webhook_bot = self.example_user('webhook_bot')
+ result = self.api_post(webhook_bot,
"/api/v1/messages", {"type": "private",
"content": "Test message",
"client": "test suite",
"to": self.example_email("othello")})
self.assert_json_success(result)
post_params = {"anchor": 1, "num_before": 1, "num_after": 1}
- result = self.api_get("webhook-bot@zulip.com", "/api/v1/messages", dict(post_params))
+ result = self.api_get(webhook_bot, "/api/v1/messages", dict(post_params))
self.assert_json_error(result, 'This API is not available to incoming webhook bots.',
status_code=401)
@@ -1405,6 +1401,8 @@ class TestInternalNotifyView(TestCase):
class TestHumanUsersOnlyDecorator(ZulipTestCase):
def test_human_only_endpoints(self) -> None:
+ default_bot = self.example_user('default_bot')
+
post_endpoints = [
"/api/v1/users/me/apns_device_token",
"/api/v1/users/me/android_gcm_reg_id",
@@ -1417,7 +1415,7 @@ class TestHumanUsersOnlyDecorator(ZulipTestCase):
"/api/v1/report/unnarrow_times",
]
for endpoint in post_endpoints:
- result = self.api_post('default-bot@zulip.com', endpoint)
+ result = self.api_post(default_bot, endpoint)
self.assert_json_error(result, "This endpoint does not accept bot requests.")
patch_endpoints = [
@@ -1427,7 +1425,7 @@ class TestHumanUsersOnlyDecorator(ZulipTestCase):
"/api/v1/users/me/profile_data"
]
for endpoint in patch_endpoints:
- result = self.api_patch('default-bot@zulip.com', endpoint)
+ result = self.api_patch(default_bot, endpoint)
self.assert_json_error(result, "This endpoint does not accept bot requests.")
delete_endpoints = [
@@ -1435,7 +1433,7 @@ class TestHumanUsersOnlyDecorator(ZulipTestCase):
"/api/v1/users/me/android_gcm_reg_id",
]
for endpoint in delete_endpoints:
- result = self.api_delete('default-bot@zulip.com', endpoint)
+ result = self.api_delete(default_bot, endpoint)
self.assert_json_error(result, "This endpoint does not accept bot requests.")
class TestAuthenticatedJsonPostViewDecorator(ZulipTestCase):
@@ -1650,7 +1648,8 @@ class TestRequireDecorators(ZulipTestCase):
self.assert_json_error(result, "Not allowed for guest users")
def test_require_member_or_admin_decorator(self) -> None:
- result = self.api_get("outgoing-webhook@zulip.com", '/api/v1/bots')
+ outgoing_webhook_bot = self.example_user('outgoing_webhook_bot')
+ result = self.api_get(outgoing_webhook_bot, '/api/v1/bots')
self.assert_json_error(result, "This endpoint does not accept bot requests.")
guest_user = self.example_user('polonius')
diff --git a/zerver/tests/test_events.py b/zerver/tests/test_events.py
index b646a3141e..65dce6de49 100644
--- a/zerver/tests/test_events.py
+++ b/zerver/tests/test_events.py
@@ -178,13 +178,13 @@ class EventsEndpointTest(ZulipTestCase):
# This test is intended to get minimal coverage on the
# events_register code paths
- email = self.example_email("hamlet")
+ user = self.example_user("hamlet")
with mock.patch('zerver.views.events_register.do_events_register', return_value={}):
- result = self.api_post(email, '/json/register')
+ result = self.api_post(user, '/json/register')
self.assert_json_success(result)
with mock.patch('zerver.lib.events.request_event_queue', return_value=None):
- result = self.api_post(email, '/json/register')
+ result = self.api_post(user, '/json/register')
self.assert_json_error(result, "Could not allocate event queue")
return_event_queue = '15:11'
@@ -193,11 +193,11 @@ class EventsEndpointTest(ZulipTestCase):
# Test that call is made to deal with a returning soft deactivated user.
with mock.patch('zerver.lib.events.reactivate_user_if_soft_deactivated') as fa:
with stub_event_queue_user_events(return_event_queue, return_user_events):
- result = self.api_post(email, '/json/register', dict(event_types=ujson.dumps(['pointer'])))
+ result = self.api_post(user, '/json/register', dict(event_types=ujson.dumps(['pointer'])))
self.assertEqual(fa.call_count, 1)
with stub_event_queue_user_events(return_event_queue, return_user_events):
- result = self.api_post(email, '/json/register', dict(event_types=ujson.dumps(['pointer'])))
+ result = self.api_post(user, '/json/register', dict(event_types=ujson.dumps(['pointer'])))
self.assert_json_success(result)
result_dict = result.json()
self.assertEqual(result_dict['last_event_id'], -1)
@@ -212,7 +212,7 @@ class EventsEndpointTest(ZulipTestCase):
}
]
with stub_event_queue_user_events(return_event_queue, return_user_events):
- result = self.api_post(email, '/json/register', dict(event_types=ujson.dumps(['pointer'])))
+ result = self.api_post(user, '/json/register', dict(event_types=ujson.dumps(['pointer'])))
self.assert_json_success(result)
result_dict = result.json()
@@ -223,7 +223,7 @@ class EventsEndpointTest(ZulipTestCase):
# Now test with `fetch_event_types` not matching the event
return_event_queue = '15:13'
with stub_event_queue_user_events(return_event_queue, return_user_events):
- result = self.api_post(email, '/json/register',
+ result = self.api_post(user, '/json/register',
dict(event_types=ujson.dumps(['pointer']),
fetch_event_types=ujson.dumps(['message'])))
self.assert_json_success(result)
@@ -237,7 +237,7 @@ class EventsEndpointTest(ZulipTestCase):
# Now test with `fetch_event_types` matching the event
with stub_event_queue_user_events(return_event_queue, return_user_events):
- result = self.api_post(email, '/json/register',
+ result = self.api_post(user, '/json/register',
dict(fetch_event_types=ujson.dumps(['pointer']),
event_types=ujson.dumps(['message'])))
self.assert_json_success(result)
@@ -1214,7 +1214,7 @@ class EventsRegisterTest(ZulipTestCase):
])),
])
- self.api_post(self.user_profile.email, "/api/v1/users/me/presence", {'status': 'idle'},
+ self.api_post(self.user_profile, "/api/v1/users/me/presence", {'status': 'idle'},
HTTP_USER_AGENT="ZulipAndroid/1.0")
self.do_test(lambda: do_update_user_presence(
self.user_profile, get_client("website"), timezone_now(), UserPresence.ACTIVE))
diff --git a/zerver/tests/test_external.py b/zerver/tests/test_external.py
index 3a2933ad9a..66e9e54bda 100644
--- a/zerver/tests/test_external.py
+++ b/zerver/tests/test_external.py
@@ -18,6 +18,10 @@ from zerver.lib.test_classes import (
ZulipTestCase,
)
+from zerver.models import (
+ UserProfile,
+)
+
import DNS
import mock
import time
@@ -58,43 +62,40 @@ class RateLimitTests(ZulipTestCase):
super().tearDown()
- def send_api_message(self, email: str, content: str) -> HttpResponse:
- return self.api_post(email, "/api/v1/messages", {"type": "stream",
- "to": "Verona",
- "client": "test suite",
- "content": content,
- "topic": "whatever"})
+ def send_api_message(self, user: UserProfile, content: str) -> HttpResponse:
+ return self.api_post(user, "/api/v1/messages", {"type": "stream",
+ "to": "Verona",
+ "client": "test suite",
+ "content": content,
+ "topic": "whatever"})
def test_headers(self) -> None:
user = self.example_user('hamlet')
- email = user.email
clear_history(RateLimitedUser(user))
- result = self.send_api_message(email, "some stuff")
+ result = self.send_api_message(user, "some stuff")
self.assertTrue('X-RateLimit-Remaining' in result)
self.assertTrue('X-RateLimit-Limit' in result)
self.assertTrue('X-RateLimit-Reset' in result)
def test_ratelimit_decrease(self) -> None:
user = self.example_user('hamlet')
- email = user.email
clear_history(RateLimitedUser(user))
- result = self.send_api_message(email, "some stuff")
+ result = self.send_api_message(user, "some stuff")
limit = int(result['X-RateLimit-Remaining'])
- result = self.send_api_message(email, "some stuff 2")
+ result = self.send_api_message(user, "some stuff 2")
newlimit = int(result['X-RateLimit-Remaining'])
self.assertEqual(limit, newlimit + 1)
def test_hit_ratelimits(self) -> None:
user = self.example_user('cordelia')
- email = user.email
clear_history(RateLimitedUser(user))
start_time = time.time()
for i in range(6):
with mock.patch('time.time', return_value=(start_time + i * 0.1)):
- result = self.send_api_message(email, "some stuff %s" % (i,))
+ result = self.send_api_message(user, "some stuff %s" % (i,))
self.assertEqual(result.status_code, 429)
json = result.json()
@@ -108,19 +109,18 @@ class RateLimitTests(ZulipTestCase):
# to make sure the rate-limiting code automatically forgives a user
# after some time has passed.
with mock.patch('time.time', return_value=(start_time + 1.0)):
- result = self.send_api_message(email, "Good message")
+ result = self.send_api_message(user, "Good message")
self.assert_json_success(result)
@mock.patch('zerver.lib.rate_limiter.logger.warning')
def test_hit_ratelimiterlockingexception(self, mock_warn: mock.MagicMock) -> None:
user = self.example_user('cordelia')
- email = user.email
clear_history(RateLimitedUser(user))
with mock.patch('zerver.lib.rate_limiter.incr_ratelimit',
side_effect=RateLimiterLockingException):
- result = self.send_api_message(email, "some stuff")
+ result = self.send_api_message(user, "some stuff")
self.assertEqual(result.status_code, 429)
mock_warn.assert_called_with("Deadlock trying to incr_ratelimit for RateLimitedUser:Id: %s"
% (user.id,))
diff --git a/zerver/tests/test_messages.py b/zerver/tests/test_messages.py
index 1fbe9f343e..4d0a6f68f8 100644
--- a/zerver/tests/test_messages.py
+++ b/zerver/tests/test_messages.py
@@ -1153,29 +1153,28 @@ class StreamMessagesTest(ZulipTestCase):
self.assertTrue(user_message.flags.mentioned)
def test_stream_message_mirroring(self) -> None:
- user_profile = self.mit_user('starnine')
- email = user_profile.email
- self.subscribe(user_profile, 'Verona')
+ user = self.mit_user('starnine')
+ self.subscribe(user, 'Verona')
- do_change_is_admin(user_profile, True, 'api_super_user')
- result = self.api_post(email, "/api/v1/messages", {"type": "stream",
- "to": "Verona",
- "sender": self.mit_email("sipbtest"),
- "client": "zephyr_mirror",
- "topic": "announcement",
- "content": "Everyone knows Iago rules",
- "forged": "true"},
+ do_change_is_admin(user, True, 'api_super_user')
+ result = self.api_post(user, "/api/v1/messages", {"type": "stream",
+ "to": "Verona",
+ "sender": self.mit_email("sipbtest"),
+ "client": "zephyr_mirror",
+ "topic": "announcement",
+ "content": "Everyone knows Iago rules",
+ "forged": "true"},
subdomain="zephyr")
self.assert_json_success(result)
- do_change_is_admin(user_profile, False, 'api_super_user')
- result = self.api_post(email, "/api/v1/messages", {"type": "stream",
- "to": "Verona",
- "sender": self.mit_email("sipbtest"),
- "client": "zephyr_mirror",
- "topic": "announcement",
- "content": "Everyone knows Iago rules",
- "forged": "true"},
+ do_change_is_admin(user, False, 'api_super_user')
+ result = self.api_post(user, "/api/v1/messages", {"type": "stream",
+ "to": "Verona",
+ "sender": self.mit_email("sipbtest"),
+ "client": "zephyr_mirror",
+ "topic": "announcement",
+ "content": "Everyone knows Iago rules",
+ "forged": "true"},
subdomain="zephyr")
self.assert_json_error(result, "User not authorized for this query")
@@ -1471,7 +1470,7 @@ class MessagePOSTTest(ZulipTestCase):
def _send_and_verify_message(self, user: UserProfile, stream_name: str, error_msg: str=None) -> None:
if error_msg is None:
msg_id = self.send_stream_message(user, stream_name)
- result = self.api_get(user.email, '/json/messages/' + str(msg_id))
+ result = self.api_get(user, '/json/messages/' + str(msg_id))
self.assert_json_success(result)
else:
with self.assertRaisesRegex(JsonableError, error_msg):
@@ -1494,12 +1493,12 @@ class MessagePOSTTest(ZulipTestCase):
"""
Same as above, but for the API view
"""
- email = self.example_email("hamlet")
- result = self.api_post(email, "/api/v1/messages", {"type": "stream",
- "to": "Verona",
- "client": "test suite",
- "content": "Test message",
- "topic": "Test topic"})
+ user = self.example_user('hamlet')
+ result = self.api_post(user, "/api/v1/messages", {"type": "stream",
+ "to": "Verona",
+ "client": "test suite",
+ "content": "Test message",
+ "topic": "Test topic"})
self.assert_json_success(result)
def test_message_to_stream_with_nonexistent_id(self) -> None:
@@ -1509,7 +1508,7 @@ class MessagePOSTTest(ZulipTestCase):
user_profile=cordelia,
)
result = self.api_post(
- bot.email, "/api/v1/messages",
+ bot, "/api/v1/messages",
{
"type": "stream",
"to": ujson.dumps([99999]),
@@ -1664,14 +1663,13 @@ class MessagePOSTTest(ZulipTestCase):
Sending messages without a to field should be sent to the default
stream for the user_profile.
"""
- user_profile = self.example_user('hamlet')
- email = user_profile.email
- user_profile.default_sending_stream_id = get_stream('Verona', user_profile.realm).id
- user_profile.save()
- result = self.api_post(email, "/api/v1/messages", {"type": "stream",
- "client": "test suite",
- "content": "Test message no to",
- "topic": "Test topic"})
+ user = self.example_user('hamlet')
+ user.default_sending_stream_id = get_stream('Verona', user.realm).id
+ user.save()
+ result = self.api_post(user, "/api/v1/messages", {"type": "stream",
+ "client": "test suite",
+ "content": "Test message no to",
+ "topic": "Test topic"})
self.assert_json_success(result)
sent_message = self.get_last_message()
@@ -1911,7 +1909,7 @@ class MessagePOSTTest(ZulipTestCase):
"""
Sending a mirrored huddle message works
"""
- result = self.api_post(self.mit_email("starnine"),
+ result = self.api_post(self.mit_user("starnine"),
"/json/messages", {"type": "private",
"sender": self.mit_email("sipbtest"),
"content": "Test message",
@@ -1925,7 +1923,7 @@ class MessagePOSTTest(ZulipTestCase):
"""
Sending a mirrored personal message works
"""
- result = self.api_post(self.mit_email("starnine"),
+ result = self.api_post(self.mit_user("starnine"),
"/json/messages", {"type": "private",
"sender": self.mit_email("sipbtest"),
"content": "Test message",
@@ -1952,7 +1950,7 @@ class MessagePOSTTest(ZulipTestCase):
"""
Sending a mirrored personal message to someone else is not allowed.
"""
- result = self.api_post(self.mit_email("starnine"), "/api/v1/messages",
+ result = self.api_post(self.mit_user("starnine"), "/api/v1/messages",
{"type": "private",
"sender": self.mit_email("sipbtest"),
"content": "Test message",
@@ -1973,12 +1971,12 @@ class MessagePOSTTest(ZulipTestCase):
self.mit_email("starnine")])}
with mock.patch('DNS.dnslookup', return_value=[['starnine:*:84233:101:Athena Consulting Exchange User,,,:/mit/starnine:/bin/bash']]):
- result1 = self.api_post(self.mit_email("starnine"), "/api/v1/messages", msg,
+ result1 = self.api_post(self.mit_user("starnine"), "/api/v1/messages", msg,
subdomain="zephyr")
self.assert_json_success(result1)
with mock.patch('DNS.dnslookup', return_value=[['espuser:*:95494:101:Esp Classroom,,,:/mit/espuser:/bin/athena/bash']]):
- result2 = self.api_post(self.mit_email("espuser"), "/api/v1/messages", msg,
+ result2 = self.api_post(self.mit_user("espuser"), "/api/v1/messages", msg,
subdomain="zephyr")
self.assert_json_success(result2)
@@ -2065,7 +2063,7 @@ class MessagePOSTTest(ZulipTestCase):
user.set_password(password)
user.is_api_super_user = True
user.save()
- result = self.api_post(user.email,
+ result = self.api_post(user,
"/api/v1/messages", {"type": "stream",
"to": "Verona",
"client": "test suite",
@@ -2077,7 +2075,7 @@ class MessagePOSTTest(ZulipTestCase):
self.assert_json_error(result, "Unknown organization 'non-existing'")
def test_send_message_when_sender_is_not_set(self) -> None:
- result = self.api_post(self.mit_email("starnine"), "/api/v1/messages",
+ result = self.api_post(self.mit_user("starnine"), "/api/v1/messages",
{"type": "private",
"content": "Test message",
"client": "zephyr_mirror",
@@ -2086,7 +2084,7 @@ class MessagePOSTTest(ZulipTestCase):
self.assert_json_error(result, "Missing sender")
def test_send_message_as_not_superuser_when_type_is_not_private(self) -> None:
- result = self.api_post(self.mit_email("starnine"), "/api/v1/messages",
+ result = self.api_post(self.mit_user("starnine"), "/api/v1/messages",
{"type": "not-private",
"sender": self.mit_email("sipbtest"),
"content": "Test message",
@@ -2099,7 +2097,7 @@ class MessagePOSTTest(ZulipTestCase):
def test_send_message_create_mirrored_message_user_returns_invalid_input(
self, create_mirrored_message_users_mock: Any) -> None:
create_mirrored_message_users_mock.side_effect = InvalidMirrorInput()
- result = self.api_post(self.mit_email("starnine"), "/api/v1/messages",
+ result = self.api_post(self.mit_user("starnine"), "/api/v1/messages",
{"type": "private",
"sender": self.mit_email("sipbtest"),
"content": "Test message",
@@ -2115,7 +2113,7 @@ class MessagePOSTTest(ZulipTestCase):
user = self.mit_user("starnine")
user.realm.string_id = 'notzephyr'
user.realm.save()
- result = self.api_post(user.email, "/api/v1/messages",
+ result = self.api_post(user, "/api/v1/messages",
{"type": "private",
"sender": self.mit_email("sipbtest"),
"content": "Test message",
@@ -2130,7 +2128,7 @@ class MessagePOSTTest(ZulipTestCase):
create_mirrored_message_users_mock.return_value = mock.Mock()
user = self.mit_user("starnine")
user_id = user.id
- result = self.api_post(user.email, "/api/v1/messages",
+ result = self.api_post(user, "/api/v1/messages",
{"type": "private",
"sender": self.mit_email("sipbtest"),
"content": "Test message",
@@ -2159,14 +2157,14 @@ class MessagePOSTTest(ZulipTestCase):
fake_date_sent = timezone_now() - datetime.timedelta(minutes=37)
fake_timestamp = datetime_to_timestamp(fake_date_sent)
- result = self.api_post(email, "/api/v1/messages", {"type": "stream",
- "forged": "true",
- "time": fake_timestamp,
- "sender": "irc-user@irc.zulip.com",
- "content": "Test message",
- "client": "irc_mirror",
- "topic": "from irc",
- "to": "IRCLand"})
+ result = self.api_post(user, "/api/v1/messages", {"type": "stream",
+ "forged": "true",
+ "time": fake_timestamp,
+ "sender": "irc-user@irc.zulip.com",
+ "content": "Test message",
+ "client": "irc_mirror",
+ "topic": "from irc",
+ "to": "IRCLand"})
self.assert_json_success(result)
msg = self.get_last_message()
@@ -2176,14 +2174,14 @@ class MessagePOSTTest(ZulipTestCase):
fake_date_sent = timezone_now() - datetime.timedelta(minutes=22)
fake_timestamp = datetime_to_timestamp(fake_date_sent)
- result = self.api_post(email, "/api/v1/messages", {"type": "stream",
- "forged": "yes",
- "time": fake_timestamp,
- "sender": "irc-user@irc.zulip.com",
- "content": "Test message",
- "client": "irc_mirror",
- "topic": "from irc",
- "to": "IRCLand"})
+ result = self.api_post(user, "/api/v1/messages", {"type": "stream",
+ "forged": "yes",
+ "time": fake_timestamp,
+ "sender": "irc-user@irc.zulip.com",
+ "content": "Test message",
+ "client": "irc_mirror",
+ "topic": "from irc",
+ "to": "IRCLand"})
self.assert_json_success(result)
msg = self.get_last_message()
@@ -2217,13 +2215,13 @@ class MessagePOSTTest(ZulipTestCase):
cordelia.is_api_super_user = False
cordelia.save()
- result = self.api_post(cordelia.email, "/api/v1/messages", payload)
+ result = self.api_post(cordelia, "/api/v1/messages", payload)
self.assert_json_error_contains(result, 'authorized')
cordelia.is_api_super_user = True
cordelia.save()
- result = self.api_post(cordelia.email, "/api/v1/messages", payload)
+ result = self.api_post(cordelia, "/api/v1/messages", payload)
self.assert_json_success(result)
test_with(
@@ -2256,13 +2254,13 @@ class MessagePOSTTest(ZulipTestCase):
content='whatever',
)
- result = self.api_post(bot.email, "/api/v1/messages", payload)
+ result = self.api_post(bot, "/api/v1/messages", payload)
self.assert_json_error_contains(result, 'Not authorized to send')
# We subscribe the bot owner! (aka cordelia)
self.subscribe(bot.bot_owner, stream_name)
- result = self.api_post(bot.email, "/api/v1/messages", payload)
+ result = self.api_post(bot, "/api/v1/messages", payload)
self.assert_json_success(result)
def test_cross_realm_bots_can_use_api_on_own_subdomain(self) -> None:
@@ -2270,7 +2268,7 @@ class MessagePOSTTest(ZulipTestCase):
notification_bot = self.notification_bot()
stream = self.make_stream("notify_channel", get_realm("zulipinternal"))
- result = self.api_post(notification_bot.email,
+ result = self.api_post(notification_bot,
"/api/v1/messages",
{"type": "stream",
"to": "notify_channel",
@@ -2332,12 +2330,12 @@ class MessagePOSTTest(ZulipTestCase):
)
# Guest user can't send message to unsubscribed public streams
- result = self.api_post(sender.email, "/api/v1/messages", payload)
+ result = self.api_post(sender, "/api/v1/messages", payload)
self.assert_json_error(result, "Not authorized to send to stream 'public stream'")
self.subscribe(sender, stream_name)
# Guest user can send message to subscribed public streams
- result = self.api_post(sender.email, "/api/v1/messages", payload)
+ result = self.api_post(sender, "/api/v1/messages", payload)
self.assert_json_success(result)
class ScheduledMessageTest(ZulipTestCase):
diff --git a/zerver/tests/test_muting.py b/zerver/tests/test_muting.py
index 98b7b81ecd..ef20e9e4bf 100644
--- a/zerver/tests/test_muting.py
+++ b/zerver/tests/test_muting.py
@@ -70,7 +70,7 @@ class MutedTopicsTests(ZulipTestCase):
]
for data in payloads:
- result = self.api_patch(user.email, url, data)
+ result = self.api_patch(user, url, data)
self.assert_json_success(result)
self.assertIn([stream.name, 'Verona3'], get_topic_mutes(user))
@@ -109,7 +109,7 @@ class MutedTopicsTests(ZulipTestCase):
)
self.assertIn([stream.name, 'Verona3'], get_topic_mutes(user))
- result = self.api_patch(email, url, data)
+ result = self.api_patch(user, url, data)
self.assert_json_success(result)
self.assertNotIn([stream.name, 'Verona3'], get_topic_mutes(user))
@@ -134,19 +134,19 @@ class MutedTopicsTests(ZulipTestCase):
url = '/api/v1/users/me/subscriptions/muted_topics'
data = {'stream': stream.name, 'topic': 'Verona3', 'op': 'add'} # type: Dict[str, Any]
- result = self.api_patch(email, url, data)
+ result = self.api_patch(user, url, data)
self.assert_json_error(result, "Topic already muted")
data = {'stream_id': 999999999, 'topic': 'Verona3', 'op': 'add'}
- result = self.api_patch(email, url, data)
+ result = self.api_patch(user, url, data)
self.assert_json_error(result, "Invalid stream id")
data = {'topic': 'Verona3', 'op': 'add'}
- result = self.api_patch(email, url, data)
+ result = self.api_patch(user, url, data)
self.assert_json_error(result, "Please supply 'stream'.")
data = {'stream': stream.name, 'stream_id': stream.id, 'topic': 'Verona3', 'op': 'add'}
- result = self.api_patch(email, url, data)
+ result = self.api_patch(user, url, data)
self.assert_json_error(result, "Please choose one: 'stream' or 'stream_id'.")
def test_muted_topic_remove_invalid(self) -> None:
@@ -158,21 +158,21 @@ class MutedTopicsTests(ZulipTestCase):
url = '/api/v1/users/me/subscriptions/muted_topics'
data = {'stream': 'BOGUS', 'topic': 'Verona3', 'op': 'remove'} # type: Dict[str, Any]
- result = self.api_patch(email, url, data)
+ result = self.api_patch(user, url, data)
self.assert_json_error(result, "Topic is not muted")
data = {'stream': stream.name, 'topic': 'BOGUS', 'op': 'remove'}
- result = self.api_patch(email, url, data)
+ result = self.api_patch(user, url, data)
self.assert_json_error(result, "Topic is not muted")
data = {'stream_id': 999999999, 'topic': 'BOGUS', 'op': 'remove'}
- result = self.api_patch(email, url, data)
+ result = self.api_patch(user, url, data)
self.assert_json_error(result, "Topic is not muted")
data = {'topic': 'Verona3', 'op': 'remove'}
- result = self.api_patch(email, url, data)
+ result = self.api_patch(user, url, data)
self.assert_json_error(result, "Please supply 'stream'.")
data = {'stream': stream.name, 'stream_id': stream.id, 'topic': 'Verona3', 'op': 'remove'}
- result = self.api_patch(email, url, data)
+ result = self.api_patch(user, url, data)
self.assert_json_error(result, "Please choose one: 'stream' or 'stream_id'.")
diff --git a/zerver/tests/test_presence.py b/zerver/tests/test_presence.py
index 98dda2c4f6..a8233c9f5c 100644
--- a/zerver/tests/test_presence.py
+++ b/zerver/tests/test_presence.py
@@ -356,12 +356,12 @@ class SingleUserPresenceTests(ZulipTestCase):
def test_single_user_get(self) -> None:
# First, we setup the test with some data
- email = self.example_email("othello")
+ user = self.example_user("othello")
self.login(self.example_email("othello"))
result = self.client_post("/json/users/me/presence", {'status': 'active'})
result = self.client_post("/json/users/me/presence", {'status': 'active'},
HTTP_USER_AGENT="ZulipDesktop/1.0")
- result = self.api_post(email, "/api/v1/users/me/presence", {'status': 'idle'},
+ result = self.api_post(user, "/api/v1/users/me/presence", {'status': 'idle'},
HTTP_USER_AGENT="ZulipAndroid/1.0")
self.assert_json_success(result)
@@ -404,17 +404,18 @@ class SingleUserPresenceTests(ZulipTestCase):
self.assertEqual(result.json()['msg'], '')
class UserPresenceAggregationTests(ZulipTestCase):
- def _send_presence_for_aggregated_tests(self, email: str, status: str,
+ def _send_presence_for_aggregated_tests(self, user: UserProfile, status: str,
validate_time: datetime.datetime) -> Dict[str, Dict[str, Any]]:
+ email = user.email
self.login(email)
timezone_util = 'zerver.views.presence.timezone_now'
with mock.patch(timezone_util, return_value=validate_time - datetime.timedelta(seconds=5)):
self.client_post("/json/users/me/presence", {'status': status})
with mock.patch(timezone_util, return_value=validate_time - datetime.timedelta(seconds=2)):
- self.api_post(email, "/api/v1/users/me/presence", {'status': status},
+ self.api_post(user, "/api/v1/users/me/presence", {'status': status},
HTTP_USER_AGENT="ZulipAndroid/1.0")
with mock.patch(timezone_util, return_value=validate_time - datetime.timedelta(seconds=7)):
- latest_result = self.api_post(email, "/api/v1/users/me/presence", {'status': status},
+ latest_result = self.api_post(user, "/api/v1/users/me/presence", {'status': status},
HTTP_USER_AGENT="ZulipIOS/1.0")
latest_result_dict = latest_result.json()
self.assertDictEqual(
@@ -429,16 +430,16 @@ class UserPresenceAggregationTests(ZulipTestCase):
return result.json()
def test_aggregated_info(self) -> None:
- email = self.example_email("othello")
+ user = self.example_user("othello")
validate_time = timezone_now()
- self._send_presence_for_aggregated_tests(str(self.example_email("othello")), 'active', validate_time)
+ self._send_presence_for_aggregated_tests(user, 'active', validate_time)
with mock.patch('zerver.views.presence.timezone_now',
return_value=validate_time - datetime.timedelta(seconds=1)):
- result = self.api_post(email, "/api/v1/users/me/presence", {'status': 'active'},
+ result = self.api_post(user, "/api/v1/users/me/presence", {'status': 'active'},
HTTP_USER_AGENT="ZulipTestDev/1.0")
result_dict = result.json()
self.assertDictEqual(
- result_dict['presences'][email]['aggregated'],
+ result_dict['presences'][user.email]['aggregated'],
{
'status': 'active',
'timestamp': datetime_to_timestamp(validate_time - datetime.timedelta(seconds=1)),
@@ -447,8 +448,9 @@ class UserPresenceAggregationTests(ZulipTestCase):
)
def test_aggregated_presense_active(self) -> None:
+ user = self.example_user('othello')
validate_time = timezone_now()
- result_dict = self._send_presence_for_aggregated_tests(str(self.example_email("othello")), 'active',
+ result_dict = self._send_presence_for_aggregated_tests(user, 'active',
validate_time)
self.assertDictEqual(
result_dict['presence']['aggregated'],
@@ -459,8 +461,9 @@ class UserPresenceAggregationTests(ZulipTestCase):
)
def test_aggregated_presense_idle(self) -> None:
+ user = self.example_user('othello')
validate_time = timezone_now()
- result_dict = self._send_presence_for_aggregated_tests(str(self.example_email("othello")), 'idle',
+ result_dict = self._send_presence_for_aggregated_tests(user, 'idle',
validate_time)
self.assertDictEqual(
result_dict['presence']['aggregated'],
@@ -471,14 +474,14 @@ class UserPresenceAggregationTests(ZulipTestCase):
)
def test_aggregated_presense_mixed(self) -> None:
- email = self.example_email("othello")
- self.login(email)
+ user = self.example_user("othello")
+ self.login(user.email)
validate_time = timezone_now()
with mock.patch('zerver.views.presence.timezone_now',
return_value=validate_time - datetime.timedelta(seconds=3)):
- self.api_post(email, "/api/v1/users/me/presence", {'status': 'active'},
+ self.api_post(user, "/api/v1/users/me/presence", {'status': 'active'},
HTTP_USER_AGENT="ZulipTestDev/1.0")
- result_dict = self._send_presence_for_aggregated_tests(str(email), 'idle', validate_time)
+ result_dict = self._send_presence_for_aggregated_tests(user, 'idle', validate_time)
self.assertDictEqual(
result_dict['presence']['aggregated'],
{
@@ -488,11 +491,11 @@ class UserPresenceAggregationTests(ZulipTestCase):
)
def test_aggregated_presense_offline(self) -> None:
- email = self.example_email("othello")
- self.login(email)
+ user = self.example_user("othello")
+ self.login(user.email)
validate_time = timezone_now()
with self.settings(OFFLINE_THRESHOLD_SECS=1):
- result_dict = self._send_presence_for_aggregated_tests(str(email), 'idle', validate_time)
+ result_dict = self._send_presence_for_aggregated_tests(user, 'idle', validate_time)
self.assertDictEqual(
result_dict['presence']['aggregated'],
{
@@ -507,18 +510,18 @@ class GetRealmStatusesTest(ZulipTestCase):
othello = self.example_user("othello")
hamlet = self.example_user("hamlet")
- result = self.api_post(othello.email, "/api/v1/users/me/presence",
+ result = self.api_post(othello, "/api/v1/users/me/presence",
dict(status='active'),
HTTP_USER_AGENT="ZulipAndroid/1.0")
- result = self.api_post(hamlet.email, "/api/v1/users/me/presence",
+ result = self.api_post(hamlet, "/api/v1/users/me/presence",
dict(status='idle'),
HTTP_USER_AGENT="ZulipDesktop/1.0")
self.assert_json_success(result)
json = result.json()
self.assertEqual(set(json['presences'].keys()), {hamlet.email, othello.email})
- result = self.api_post(hamlet.email, "/api/v1/users/me/presence",
+ result = self.api_post(hamlet, "/api/v1/users/me/presence",
dict(status='active', slim_presence='true'),
HTTP_USER_AGENT="ZulipDesktop/1.0")
self.assert_json_success(result)
@@ -526,7 +529,7 @@ class GetRealmStatusesTest(ZulipTestCase):
self.assertEqual(set(json['presences'].keys()), {str(hamlet.id), str(othello.id)})
# Check that a bot can fetch the presence data for the realm.
- result = self.api_get(self.example_email("default_bot"), "/api/v1/realm/presence")
+ result = self.api_get(self.example_user("default_bot"), "/api/v1/realm/presence")
self.assert_json_success(result)
json = result.json()
self.assertEqual(set(json['presences'].keys()), {hamlet.email, othello.email})
diff --git a/zerver/tests/test_push_notifications.py b/zerver/tests/test_push_notifications.py
index f9de22e51c..64c1d5dba6 100644
--- a/zerver/tests/test_push_notifications.py
+++ b/zerver/tests/test_push_notifications.py
@@ -138,14 +138,17 @@ class PushBouncerNotificationTest(BouncerTestCase):
# We need the root ('') subdomain to be in use for this next
# test, since the push bouncer API is only available there:
+ hamlet = self.example_user('hamlet')
realm = get_realm("zulip")
realm.string_id = ""
realm.save()
- result = self.api_post(self.example_email("hamlet"), endpoint, {'token': token,
- 'user_id': 15,
- 'token_kind': token_kind},
- subdomain="")
+ result = self.api_post(
+ hamlet,
+ endpoint,
+ dict(user_id=15, token=token, token_kind=token_kind),
+ subdomain='',
+ )
self.assert_json_error(result, "Must validate with valid Zulip server API key")
def test_register_remote_push_user_paramas(self) -> None:
@@ -164,21 +167,27 @@ class PushBouncerNotificationTest(BouncerTestCase):
result = self.uuid_post(self.server_uuid, endpoint, {'user_id': user_id, 'token': token, 'token_kind': 17})
self.assert_json_error(result, "Invalid token type")
- result = self.api_post(self.example_email("hamlet"), endpoint, {'user_id': user_id,
- 'token_kind': token_kind,
- 'token': token})
+ result = self.api_post(
+ self.example_user("hamlet"),
+ endpoint,
+ dict(user_id=user_id, token_kin=token_kind, token=token),
+ )
self.assert_json_error(result, "Account is not associated with this subdomain",
status_code=401)
+ hamlet = self.example_user('hamlet')
+
# We need the root ('') subdomain to be in use for this next
# test, since the push bouncer API is only available there:
realm = get_realm("zulip")
realm.string_id = ""
realm.save()
- result = self.api_post(self.example_email("hamlet"), endpoint, {'user_id': user_id,
- 'token_kind': token_kind,
- 'token': token})
+ result = self.api_post(
+ hamlet,
+ endpoint,
+ dict(user_id=user_id, token_kind=token_kind, token=token),
+ )
self.assert_json_error(result, "Must validate with valid Zulip server API key")
result = self.uuid_post(
diff --git a/zerver/tests/test_reactions.py b/zerver/tests/test_reactions.py
index 87d5f90675..743ed20d3b 100644
--- a/zerver/tests/test_reactions.py
+++ b/zerver/tests/test_reactions.py
@@ -16,7 +16,7 @@ class ReactionEmojiTest(ZulipTestCase):
"""
Sending reaction without emoji fails
"""
- sender = self.example_email("hamlet")
+ sender = self.example_user("hamlet")
reaction_info = {
'emoji_name': ''
}
@@ -29,7 +29,7 @@ class ReactionEmojiTest(ZulipTestCase):
"""
Sending invalid emoji fails
"""
- sender = self.example_email("hamlet")
+ sender = self.example_user("hamlet")
reaction_info = {
'emoji_name': 'foo'
}
@@ -45,7 +45,7 @@ class ReactionEmojiTest(ZulipTestCase):
emoji = RealmEmoji.objects.get(name="green_tick")
emoji.deactivated = True
emoji.save(update_fields=['deactivated'])
- sender = self.example_email("hamlet")
+ sender = self.example_user("hamlet")
reaction_info = {
'emoji_name': 'green_tick',
'reaction_type': 'realm_emoji'
@@ -59,7 +59,7 @@ class ReactionEmojiTest(ZulipTestCase):
"""
Reacting with valid emoji succeeds
"""
- sender = self.example_email("hamlet")
+ sender = self.example_user("hamlet")
reaction_info = {
'emoji_name': 'smile'
}
@@ -73,7 +73,7 @@ class ReactionEmojiTest(ZulipTestCase):
"""
Reacting with zulip emoji succeeds
"""
- sender = self.example_email("hamlet")
+ sender = self.example_user("hamlet")
reaction_info = {
'emoji_name': 'zulip',
'reaction_type': 'zulip_extra_emoji'
@@ -93,7 +93,7 @@ class ReactionEmojiTest(ZulipTestCase):
message_id = self.send_stream_message(self.example_user("cordelia"), stream_name)
user_profile = self.example_user('hamlet')
- sender = user_profile.email
+ sender = user_profile
# Verify that hamlet did not receive the message.
self.assertFalse(UserMessage.objects.filter(user_profile=user_profile,
@@ -118,7 +118,7 @@ class ReactionEmojiTest(ZulipTestCase):
"""
Reacting with valid realm emoji succeeds
"""
- sender = self.example_email("hamlet")
+ sender = self.example_user("hamlet")
reaction_info = {
'emoji_name': 'green_tick',
@@ -189,7 +189,7 @@ class ReactionMessageIDTest(ZulipTestCase):
"""
Reacting without a message_id fails
"""
- sender = self.example_email("hamlet")
+ sender = self.example_user("hamlet")
reaction_info = {
'emoji_name': 'smile'
}
@@ -202,7 +202,7 @@ class ReactionMessageIDTest(ZulipTestCase):
"""
Reacting to an invalid message id fails
"""
- sender = self.example_email("hamlet")
+ sender = self.example_user("hamlet")
reaction_info = {
'emoji_name': 'smile'
}
@@ -215,9 +215,9 @@ class ReactionMessageIDTest(ZulipTestCase):
"""
Reacting to a inaccessible (for instance, private) message fails
"""
- pm_sender = self.example_email("hamlet")
+ pm_sender = self.example_user("hamlet")
pm_recipient = self.example_email("othello")
- reaction_sender = self.example_email("iago")
+ reaction_sender = self.example_user("iago")
result = self.api_post(pm_sender,
"/api/v1/messages", {"type": "private",
@@ -238,14 +238,14 @@ class ReactionTest(ZulipTestCase):
"""
Creating the same reaction twice fails
"""
- pm_sender = self.example_email("hamlet")
- pm_recipient = self.example_email("othello")
+ pm_sender = self.example_user("hamlet")
+ pm_recipient = self.example_user("othello")
reaction_sender = pm_recipient
pm = self.api_post(pm_sender,
"/api/v1/messages", {"type": "private",
"content": "Test message",
- "to": pm_recipient})
+ "to": pm_recipient.email})
self.assert_json_success(pm)
content = ujson.loads(pm.content)
@@ -267,14 +267,14 @@ class ReactionTest(ZulipTestCase):
"""
Removing a reaction twice fails
"""
- pm_sender = self.example_email("hamlet")
- pm_recipient = self.example_email("othello")
+ pm_sender = self.example_user("hamlet")
+ pm_recipient = self.example_user("othello")
reaction_sender = pm_recipient
pm = self.api_post(pm_sender,
"/api/v1/messages", {"type": "private",
"content": "Test message",
- "to": pm_recipient})
+ "to": pm_recipient.email})
self.assert_json_success(pm)
content = ujson.loads(pm.content)
@@ -301,7 +301,7 @@ class ReactionTest(ZulipTestCase):
various emoji infra changes.
"""
realm = get_realm('zulip')
- sender = self.example_email("hamlet")
+ sender = self.example_user("hamlet")
emoji_code, reaction_type = emoji_name_to_emoji_code(realm, 'smile')
reaction_info = {
'emoji_name': 'smile',
@@ -320,7 +320,7 @@ class ReactionTest(ZulipTestCase):
"""
Removes an old existing reaction but the realm emoji used there has been deactivated.
"""
- sender = self.example_email("hamlet")
+ sender = self.example_user("hamlet")
emoji = RealmEmoji.objects.get(name="green_tick")
@@ -349,7 +349,7 @@ class ReactionEventTest(ZulipTestCase):
pm_recipient = self.example_user('othello')
reaction_sender = pm_recipient
- result = self.api_post(pm_sender.email,
+ result = self.api_post(pm_sender,
"/api/v1/messages", {"type": "private",
"content": "Test message",
"to": pm_recipient.email})
@@ -364,7 +364,7 @@ class ReactionEventTest(ZulipTestCase):
events = [] # type: List[Mapping[str, Any]]
with tornado_redirected_to_list(events):
- result = self.api_post(reaction_sender.email, '/api/v1/messages/%s/reactions' % (pm_id,),
+ result = self.api_post(reaction_sender, '/api/v1/messages/%s/reactions' % (pm_id,),
reaction_info)
self.assert_json_success(result)
self.assertEqual(len(events), 1)
@@ -388,7 +388,7 @@ class ReactionEventTest(ZulipTestCase):
pm_recipient = self.example_user('othello')
reaction_sender = pm_recipient
- result = self.api_post(pm_sender.email,
+ result = self.api_post(pm_sender,
"/api/v1/messages", {"type": "private",
"content": "Test message",
"to": pm_recipient.email})
@@ -402,13 +402,13 @@ class ReactionEventTest(ZulipTestCase):
'emoji_name': 'smile'
}
- add = self.api_post(reaction_sender.email, '/api/v1/messages/%s/reactions' % (pm_id,),
+ add = self.api_post(reaction_sender, '/api/v1/messages/%s/reactions' % (pm_id,),
reaction_info)
self.assert_json_success(add)
events = [] # type: List[Mapping[str, Any]]
with tornado_redirected_to_list(events):
- result = self.api_delete(reaction_sender.email, '/api/v1/messages/%s/reactions' % (pm_id,),
+ result = self.api_delete(reaction_sender, '/api/v1/messages/%s/reactions' % (pm_id,),
reaction_info)
self.assert_json_success(result)
self.assertEqual(len(events), 1)
@@ -434,7 +434,7 @@ class EmojiReactionBase(ZulipTestCase):
sender: str='hamlet') -> HttpResponse:
if 'reaction_type' not in reaction_info:
reaction_info['reaction_type'] = self.reaction_type
- sender = self.example_email(sender)
+ sender = self.example_user(sender)
result = self.api_post(sender, '/api/v1/messages/%s/reactions' % (message_id,),
reaction_info)
return result
@@ -453,7 +453,7 @@ class EmojiReactionBase(ZulipTestCase):
sender: str='hamlet') -> HttpResponse:
if 'reaction_type' not in reaction_info:
reaction_info['reaction_type'] = self.reaction_type
- sender = self.example_email(sender)
+ sender = self.example_user(sender)
result = self.api_delete(sender, '/api/v1/messages/%s/reactions' % (message_id,),
reaction_info)
return result
@@ -799,7 +799,7 @@ class RealmEmojiReactionTests(EmojiReactionBase):
'emoji_code': 'zulip',
'reaction_type': 'nonexistent_emoji_type',
}
- sender = self.example_email("hamlet")
+ sender = self.example_user("hamlet")
message_id = 1
result = self.api_post(sender, '/api/v1/messages/%s/reactions' % (message_id,),
reaction_info)
diff --git a/zerver/tests/test_realm.py b/zerver/tests/test_realm.py
index 580ef2cc2f..a993e76a30 100644
--- a/zerver/tests/test_realm.py
+++ b/zerver/tests/test_realm.py
@@ -419,14 +419,14 @@ class RealmTest(ZulipTestCase):
self.assertEqual(edited_user_profile.email, "user%s@zulip.testserver" % (edited_user_profile.id,))
# Check normal user cannot access email
- result = self.api_get(cordelia.delivery_email, "/api/v1/users/%s" % (hamlet.id,))
+ result = self.api_get(cordelia, "/api/v1/users/%s" % (hamlet.id,))
self.assert_json_success(result)
self.assertEqual(result.json()['user']['email'],
'user%s@zulip.testserver' % (hamlet.id,))
self.assertEqual(result.json()['user'].get('delivery_email'), None)
# Check administrator gets delivery_email with EMAIL_ADDRESS_VISIBILITY_ADMINS
- result = self.api_get(user_profile.delivery_email, "/api/v1/users/%s" % (hamlet.id,))
+ result = self.api_get(user_profile, "/api/v1/users/%s" % (hamlet.id,))
self.assert_json_success(result)
self.assertEqual(result.json()['user']['email'],
'user%s@zulip.testserver' % (hamlet.id,))
@@ -444,7 +444,7 @@ class RealmTest(ZulipTestCase):
# Check even administrator doesn't get delivery_email with
# EMAIL_ADDRESS_VISIBILITY_NOBODY
- result = self.api_get(user_profile.delivery_email, "/api/v1/users/%s" % (hamlet.id,))
+ result = self.api_get(user_profile, "/api/v1/users/%s" % (hamlet.id,))
self.assert_json_success(result)
self.assertEqual(result.json()['user']['email'],
'user%s@zulip.testserver' % (hamlet.id,))
diff --git a/zerver/tests/test_subs.py b/zerver/tests/test_subs.py
index 144b064f4e..60bcb9bd64 100644
--- a/zerver/tests/test_subs.py
+++ b/zerver/tests/test_subs.py
@@ -180,7 +180,7 @@ class TestCreateStreams(ZulipTestCase):
post_data = {'subscriptions': ujson.dumps([{"name": 'new_stream',
"description": "multi\nline\ndescription"}]),
'invite_only': ujson.dumps(False)}
- result = self.api_post(user.email, "/api/v1/users/me/subscriptions", post_data,
+ result = self.api_post(user, "/api/v1/users/me/subscriptions", post_data,
subdomain="zulip")
self.assert_json_success(result)
stream = get_stream("new_stream", realm)
@@ -1536,21 +1536,19 @@ class SubscriptionPropertiesTest(ZulipTestCase):
any invalid hex color codes are bounced.
"""
test_user = self.example_user('hamlet')
- test_email = test_user.email
- test_realm = test_user.realm
- self.login(test_email)
+ self.login(test_user.email)
old_subs, _ = gather_subscriptions(test_user)
sub = old_subs[0]
stream_id = sub['stream_id']
new_color = "#ffffff" # TODO: ensure that this is different from old_color
- result = self.api_post(test_email, "/api/v1/users/me/subscriptions/properties",
+ result = self.api_post(test_user, "/api/v1/users/me/subscriptions/properties",
{"subscription_data": ujson.dumps([{"property": "color",
"stream_id": stream_id,
"value": "#ffffff"}])})
self.assert_json_success(result)
- new_subs = gather_subscriptions(get_user(test_email, test_realm))[0]
+ new_subs = gather_subscriptions(test_user)[0]
found_sub = None
for sub in new_subs:
if sub['stream_id'] == stream_id:
@@ -1569,7 +1567,7 @@ class SubscriptionPropertiesTest(ZulipTestCase):
self.assertEqual(old_subs, new_subs)
invalid_color = "3ffrff"
- result = self.api_post(test_email, "/api/v1/users/me/subscriptions/properties",
+ result = self.api_post(test_user, "/api/v1/users/me/subscriptions/properties",
{"subscription_data": ujson.dumps([{"property": "color",
"stream_id": stream_id,
"value": invalid_color}])})
@@ -1580,9 +1578,8 @@ class SubscriptionPropertiesTest(ZulipTestCase):
Updating the color property requires a `stream_id` key.
"""
test_user = self.example_user('hamlet')
- test_email = test_user.email
- self.login(test_email)
- result = self.api_post(test_email, "/api/v1/users/me/subscriptions/properties",
+ self.login(test_user.email)
+ result = self.api_post(test_user, "/api/v1/users/me/subscriptions/properties",
{"subscription_data": ujson.dumps([{"property": "color",
"value": "#ffffff"}])})
self.assert_json_error(
@@ -1592,14 +1589,12 @@ class SubscriptionPropertiesTest(ZulipTestCase):
"""
Updating the color property requires a subscribed stream.
"""
- test_email = self.example_email("hamlet")
- self.login(test_email)
- test_realm = get_realm("zulip")
+ test_user = self.example_user("hamlet")
+ self.login(test_user.email)
- subscribed, unsubscribed, never_subscribed = gather_subscriptions_helper(
- get_user(test_email, test_realm))
+ subscribed, unsubscribed, never_subscribed = gather_subscriptions_helper(test_user)
not_subbed = unsubscribed + never_subscribed
- result = self.api_post(test_email, "/api/v1/users/me/subscriptions/properties",
+ result = self.api_post(test_user, "/api/v1/users/me/subscriptions/properties",
{"subscription_data": ujson.dumps([{"property": "color",
"stream_id": not_subbed[0]["stream_id"],
"value": "#ffffff"}])})
@@ -1611,10 +1606,9 @@ class SubscriptionPropertiesTest(ZulipTestCase):
Updating the color property requires a color.
"""
test_user = self.example_user('hamlet')
- test_email = test_user.email
- self.login(test_email)
+ self.login(test_user.email)
subs = gather_subscriptions(test_user)[0]
- result = self.api_post(test_email, "/api/v1/users/me/subscriptions/properties",
+ result = self.api_post(test_user, "/api/v1/users/me/subscriptions/properties",
{"subscription_data": ujson.dumps([{"property": "color",
"stream_id": subs[0]["stream_id"]}])})
self.assert_json_error(
@@ -1626,12 +1620,11 @@ class SubscriptionPropertiesTest(ZulipTestCase):
sets the property.
"""
test_user = self.example_user('hamlet')
- test_email = test_user.email
- self.login(test_email)
+ self.login(test_user.email)
subs = gather_subscriptions(test_user)[0]
sub = subs[0]
- result = self.api_post(test_email, "/api/v1/users/me/subscriptions/properties",
+ result = self.api_post(test_user, "/api/v1/users/me/subscriptions/properties",
{"subscription_data": ujson.dumps([{"property": "wildcard_mentions_notify",
"stream_id": sub["stream_id"],
"value": True}])})
@@ -1647,29 +1640,27 @@ class SubscriptionPropertiesTest(ZulipTestCase):
A POST request to /api/v1/users/me/subscriptions/properties with stream_id and
pin_to_top data pins the stream.
"""
- user_profile = self.example_user('hamlet')
- test_email = user_profile.email
- self.login(test_email)
+ user = self.example_user('hamlet')
+ self.login(user.email)
- old_subs, _ = gather_subscriptions(user_profile)
+ old_subs, _ = gather_subscriptions(user)
sub = old_subs[0]
stream_id = sub['stream_id']
new_pin_to_top = not sub['pin_to_top']
- result = self.api_post(test_email, "/api/v1/users/me/subscriptions/properties",
+ result = self.api_post(user, "/api/v1/users/me/subscriptions/properties",
{"subscription_data": ujson.dumps([{"property": "pin_to_top",
"stream_id": stream_id,
"value": new_pin_to_top}])})
self.assert_json_success(result)
- updated_sub = get_subscription(sub['name'], user_profile)
+ updated_sub = get_subscription(sub['name'], user)
self.assertIsNotNone(updated_sub)
self.assertEqual(updated_sub.pin_to_top, new_pin_to_top)
def test_change_is_muted(self) -> None:
test_user = self.example_user('hamlet')
- test_email = test_user.email
- self.login(test_email)
+ self.login(test_user.email)
subs = gather_subscriptions(test_user)[0]
sub = Subscription.objects.get(recipient__type=Recipient.STREAM,
@@ -1680,7 +1671,7 @@ class SubscriptionPropertiesTest(ZulipTestCase):
events = [] # type: List[Mapping[str, Any]]
property_name = "is_muted"
with tornado_redirected_to_list(events):
- result = self.api_post(test_email, "/api/v1/users/me/subscriptions/properties",
+ result = self.api_post(test_user, "/api/v1/users/me/subscriptions/properties",
{"subscription_data": ujson.dumps([{"property": property_name,
"value": True,
"stream_id": subs[0]["stream_id"]}])})
@@ -1696,7 +1687,7 @@ class SubscriptionPropertiesTest(ZulipTestCase):
events = []
legacy_property_name = 'in_home_view'
with tornado_redirected_to_list(events):
- result = self.api_post(test_email, "/api/v1/users/me/subscriptions/properties",
+ result = self.api_post(test_user, "/api/v1/users/me/subscriptions/properties",
{"subscription_data": ujson.dumps([{"property": legacy_property_name,
"value": True,
"stream_id": subs[0]["stream_id"]}])})
@@ -1712,7 +1703,7 @@ class SubscriptionPropertiesTest(ZulipTestCase):
events = []
with tornado_redirected_to_list(events):
- result = self.api_post(test_email, "/api/v1/users/me/subscriptions/properties",
+ result = self.api_post(test_user, "/api/v1/users/me/subscriptions/properties",
{"subscription_data": ujson.dumps([{"property": legacy_property_name,
"value": False,
"stream_id": subs[0]["stream_id"]}])})
@@ -1731,12 +1722,11 @@ class SubscriptionPropertiesTest(ZulipTestCase):
Trying to set a property incorrectly returns a JSON error.
"""
test_user = self.example_user('hamlet')
- test_email = test_user.email
- self.login(test_email)
+ self.login(test_user.email)
subs = gather_subscriptions(test_user)[0]
property_name = "is_muted"
- result = self.api_post(test_email, "/api/v1/users/me/subscriptions/properties",
+ result = self.api_post(test_user, "/api/v1/users/me/subscriptions/properties",
{"subscription_data": ujson.dumps([{"property": property_name,
"value": "bad",
"stream_id": subs[0]["stream_id"]}])})
@@ -1744,7 +1734,7 @@ class SubscriptionPropertiesTest(ZulipTestCase):
'%s is not a boolean' % (property_name,))
property_name = "in_home_view"
- result = self.api_post(test_email, "/api/v1/users/me/subscriptions/properties",
+ result = self.api_post(test_user, "/api/v1/users/me/subscriptions/properties",
{"subscription_data": ujson.dumps([{"property": property_name,
"value": "bad",
"stream_id": subs[0]["stream_id"]}])})
@@ -1752,7 +1742,7 @@ class SubscriptionPropertiesTest(ZulipTestCase):
'%s is not a boolean' % (property_name,))
property_name = "desktop_notifications"
- result = self.api_post(test_email, "/api/v1/users/me/subscriptions/properties",
+ result = self.api_post(test_user, "/api/v1/users/me/subscriptions/properties",
{"subscription_data": ujson.dumps([{"property": property_name,
"value": "bad",
"stream_id": subs[0]["stream_id"]}])})
@@ -1760,7 +1750,7 @@ class SubscriptionPropertiesTest(ZulipTestCase):
'%s is not a boolean' % (property_name,))
property_name = "audible_notifications"
- result = self.api_post(test_email, "/api/v1/users/me/subscriptions/properties",
+ result = self.api_post(test_user, "/api/v1/users/me/subscriptions/properties",
{"subscription_data": ujson.dumps([{"property": property_name,
"value": "bad",
"stream_id": subs[0]["stream_id"]}])})
@@ -1768,7 +1758,7 @@ class SubscriptionPropertiesTest(ZulipTestCase):
'%s is not a boolean' % (property_name,))
property_name = "push_notifications"
- result = self.api_post(test_email, "/api/v1/users/me/subscriptions/properties",
+ result = self.api_post(test_user, "/api/v1/users/me/subscriptions/properties",
{"subscription_data": ujson.dumps([{"property": property_name,
"value": "bad",
"stream_id": subs[0]["stream_id"]}])})
@@ -1776,7 +1766,7 @@ class SubscriptionPropertiesTest(ZulipTestCase):
'%s is not a boolean' % (property_name,))
property_name = "email_notifications"
- result = self.api_post(test_email, "/api/v1/users/me/subscriptions/properties",
+ result = self.api_post(test_user, "/api/v1/users/me/subscriptions/properties",
{"subscription_data": ujson.dumps([{"property": property_name,
"value": "bad",
"stream_id": subs[0]["stream_id"]}])})
@@ -1784,7 +1774,7 @@ class SubscriptionPropertiesTest(ZulipTestCase):
'%s is not a boolean' % (property_name,))
property_name = "wildcard_mentions_notify"
- result = self.api_post(test_email, "/api/v1/users/me/subscriptions/properties",
+ result = self.api_post(test_user, "/api/v1/users/me/subscriptions/properties",
{"subscription_data": ujson.dumps([{"property": property_name,
"value": "bad",
"stream_id": subs[0]["stream_id"]}])})
@@ -1793,7 +1783,7 @@ class SubscriptionPropertiesTest(ZulipTestCase):
"%s is not a boolean" % (property_name,))
property_name = "color"
- result = self.api_post(test_email, "/api/v1/users/me/subscriptions/properties",
+ result = self.api_post(test_user, "/api/v1/users/me/subscriptions/properties",
{"subscription_data": ujson.dumps([{"property": property_name,
"value": False,
"stream_id": subs[0]["stream_id"]}])})
@@ -1801,11 +1791,11 @@ class SubscriptionPropertiesTest(ZulipTestCase):
'%s is not a string' % (property_name,))
def test_json_subscription_property_invalid_stream(self) -> None:
- test_email = self.example_email("hamlet")
- self.login(test_email)
+ test_user = self.example_user("hamlet")
+ self.login(test_user.email)
stream_id = 1000
- result = self.api_post(test_email, "/api/v1/users/me/subscriptions/properties",
+ result = self.api_post(test_user, "/api/v1/users/me/subscriptions/properties",
{"subscription_data": ujson.dumps([{"property": "is_muted",
"stream_id": stream_id,
"value": False}])})
@@ -1816,10 +1806,9 @@ class SubscriptionPropertiesTest(ZulipTestCase):
Trying to set an invalid property returns a JSON error.
"""
test_user = self.example_user('hamlet')
- test_email = test_user.email
- self.login(test_email)
+ self.login(test_user.email)
subs = gather_subscriptions(test_user)[0]
- result = self.api_post(test_email, "/api/v1/users/me/subscriptions/properties",
+ result = self.api_post(test_user, "/api/v1/users/me/subscriptions/properties",
{"subscription_data": ujson.dumps([{"property": "bad",
"value": "bad",
"stream_id": subs[0]["stream_id"]}])})
@@ -1828,56 +1817,54 @@ class SubscriptionPropertiesTest(ZulipTestCase):
class SubscriptionRestApiTest(ZulipTestCase):
def test_basic_add_delete(self) -> None:
- hamlet = self.example_user('hamlet')
- email = hamlet.email
- self.login(hamlet.email)
+ user = self.example_user('hamlet')
+ self.login(user.email)
# add
request = {
'add': ujson.dumps([{'name': 'my_test_stream_1'}])
}
- result = self.api_patch(email, "/api/v1/users/me/subscriptions", request)
+ result = self.api_patch(user, "/api/v1/users/me/subscriptions", request)
self.assert_json_success(result)
- streams = self.get_streams(hamlet)
+ streams = self.get_streams(user)
self.assertTrue('my_test_stream_1' in streams)
# now delete the same stream
request = {
'delete': ujson.dumps(['my_test_stream_1'])
}
- result = self.api_patch(email, "/api/v1/users/me/subscriptions", request)
+ result = self.api_patch(user, "/api/v1/users/me/subscriptions", request)
self.assert_json_success(result)
- streams = self.get_streams(hamlet)
+ streams = self.get_streams(user)
self.assertTrue('my_test_stream_1' not in streams)
def test_add_with_color(self) -> None:
- email = self.example_email('hamlet')
- self.login(email)
+ user = self.example_user('hamlet')
+ self.login(user.email)
# add with color proposition
request = {
'add': ujson.dumps([{'name': 'my_test_stream_2', 'color': '#afafaf'}])
}
- result = self.api_patch(email, "/api/v1/users/me/subscriptions", request)
+ result = self.api_patch(user, "/api/v1/users/me/subscriptions", request)
self.assert_json_success(result)
# incorrect color format
request = {
'subscriptions': ujson.dumps([{'name': 'my_test_stream_3', 'color': '#0g0g0g'}])
}
- result = self.api_post(email, "/api/v1/users/me/subscriptions", request)
+ result = self.api_post(user, "/api/v1/users/me/subscriptions", request)
self.assert_json_error(result, 'subscriptions[0]["color"] is not a valid hex color code')
def test_api_valid_property(self) -> None:
"""
Trying to set valid json returns success message.
"""
- test_user = self.example_user('hamlet')
- test_email = test_user.email
+ user = self.example_user('hamlet')
- self.login(test_email)
- subs = gather_subscriptions(test_user)[0]
- result = self.api_patch(test_email, "/api/v1/users/me/subscriptions/%d" % (subs[0]["stream_id"],),
+ self.login(user.email)
+ subs = gather_subscriptions(user)[0]
+ result = self.api_patch(user, "/api/v1/users/me/subscriptions/%d" % (subs[0]["stream_id"],),
{'property': 'color', 'value': '#c2c2c2'})
self.assert_json_success(result)
@@ -1886,13 +1873,12 @@ class SubscriptionRestApiTest(ZulipTestCase):
Trying to set an invalid property returns a JSON error.
"""
- test_user = self.example_user('hamlet')
- test_email = test_user.email
+ user = self.example_user('hamlet')
- self.login(test_email)
- subs = gather_subscriptions(test_user)[0]
+ self.login(user.email)
+ subs = gather_subscriptions(user)[0]
- result = self.api_patch(test_email, "/api/v1/users/me/subscriptions/%d" % (subs[0]["stream_id"],),
+ result = self.api_patch(user, "/api/v1/users/me/subscriptions/%d" % (subs[0]["stream_id"],),
{'property': 'invalid', 'value': 'somevalue'})
self.assert_json_error(result,
"Unknown subscription property: invalid")
@@ -1901,22 +1887,22 @@ class SubscriptionRestApiTest(ZulipTestCase):
"""
Trying to set an invalid stream id returns a JSON error.
"""
- test_email = self.example_email("hamlet")
- self.login(test_email)
- result = self.api_patch(test_email, "/api/v1/users/me/subscriptions/121",
+ user = self.example_user("hamlet")
+ self.login(user.email)
+ result = self.api_patch(user, "/api/v1/users/me/subscriptions/121",
{'property': 'is_muted', 'value': 'somevalue'})
self.assert_json_error(result,
"Invalid stream id")
def test_bad_add_parameters(self) -> None:
- email = self.example_email('hamlet')
- self.login(email)
+ user = self.example_user('hamlet')
+ self.login(user.email)
def check_for_error(val: Any, expected_message: str) -> None:
request = {
'add': ujson.dumps(val)
}
- result = self.api_patch(email, "/api/v1/users/me/subscriptions", request)
+ result = self.api_patch(user, "/api/v1/users/me/subscriptions", request)
self.assert_json_error(result, expected_message)
check_for_error(['foo'], 'add[0] is not a dict')
@@ -1924,31 +1910,31 @@ class SubscriptionRestApiTest(ZulipTestCase):
check_for_error([{'name': {}}], 'add[0]["name"] is not a string')
def test_bad_principals(self) -> None:
- email = self.example_email('hamlet')
- self.login(email)
+ user = self.example_user('hamlet')
+ self.login(user.email)
request = {
'add': ujson.dumps([{'name': 'my_new_stream'}]),
'principals': ujson.dumps([{}]),
}
- result = self.api_patch(email, "/api/v1/users/me/subscriptions", request)
+ result = self.api_patch(user, "/api/v1/users/me/subscriptions", request)
self.assert_json_error(result, 'principals[0] is not a string')
def test_bad_delete_parameters(self) -> None:
- email = self.example_email('hamlet')
- self.login(email)
+ user = self.example_user('hamlet')
+ self.login(user.email)
request = {
'delete': ujson.dumps([{'name': 'my_test_stream_1'}])
}
- result = self.api_patch(email, "/api/v1/users/me/subscriptions", request)
+ result = self.api_patch(user, "/api/v1/users/me/subscriptions", request)
self.assert_json_error(result, "delete[0] is not a string")
def test_add_or_delete_not_specified(self) -> None:
- email = self.example_email('hamlet')
- self.login(email)
+ user = self.example_user('hamlet')
+ self.login(user.email)
- result = self.api_patch(email, "/api/v1/users/me/subscriptions", {})
+ result = self.api_patch(user, "/api/v1/users/me/subscriptions", {})
self.assert_json_error(result,
'Nothing to do. Specify at least one of "add" or "delete".')
@@ -1956,38 +1942,38 @@ class SubscriptionRestApiTest(ZulipTestCase):
"""
Only way to force an error is with a empty string.
"""
- email = self.example_email('hamlet')
- self.login(email)
+ user = self.example_user('hamlet')
+ self.login(user.email)
invalid_stream_name = ""
request = {
'delete': ujson.dumps([invalid_stream_name])
}
- result = self.api_patch(email, "/api/v1/users/me/subscriptions", request)
+ result = self.api_patch(user, "/api/v1/users/me/subscriptions", request)
self.assert_json_error(result,
"Invalid stream name '%s'" % (invalid_stream_name,))
def test_stream_name_too_long(self) -> None:
- email = self.example_email('hamlet')
- self.login(email)
+ user = self.example_user('hamlet')
+ self.login(user.email)
long_stream_name = "a" * 61
request = {
'delete': ujson.dumps([long_stream_name])
}
- result = self.api_patch(email, "/api/v1/users/me/subscriptions", request)
+ result = self.api_patch(user, "/api/v1/users/me/subscriptions", request)
self.assert_json_error(result,
"Stream name too long (limit: 60 characters).")
def test_stream_name_contains_null(self) -> None:
- email = self.example_email('hamlet')
- self.login(email)
+ user = self.example_user('hamlet')
+ self.login(user.email)
stream_name = "abc\000"
request = {
'delete': ujson.dumps([stream_name])
}
- result = self.api_patch(email, "/api/v1/users/me/subscriptions", request)
+ result = self.api_patch(user, "/api/v1/users/me/subscriptions", request)
self.assert_json_error(result,
"Stream name '%s' contains NULL (0x00) characters." % (stream_name,))
@@ -2051,8 +2037,7 @@ class SubscriptionAPITest(ZulipTestCase):
"""
Calling /api/v1/users/me/subscriptions should successfully return your subscriptions.
"""
- email = self.test_email
- result = self.api_get(email, "/api/v1/users/me/subscriptions")
+ result = self.api_get(self.test_user, "/api/v1/users/me/subscriptions")
self.assert_json_success(result)
json = result.json()
self.assertIn("subscriptions", json)
@@ -2442,7 +2427,7 @@ class SubscriptionAPITest(ZulipTestCase):
streams_to_sub,
dict(principals=ujson.dumps([user1.email, user2.email])),
)
- self.assert_length(queries, 42)
+ self.assert_length(queries, 40)
self.assert_length(events, 7)
for ev in [x for x in events if x['event']['type'] not in ('message', 'stream')]:
@@ -2815,7 +2800,7 @@ class SubscriptionAPITest(ZulipTestCase):
# Make sure Zephyr mirroring realms such as MIT do not get
# any tornado subscription events
self.assert_length(events, 0)
- self.assert_length(queries, 7)
+ self.assert_length(queries, 5)
events = []
with tornado_redirected_to_list(events):
@@ -2841,7 +2826,7 @@ class SubscriptionAPITest(ZulipTestCase):
dict(principals=ujson.dumps([self.test_email])),
)
# Make sure we don't make O(streams) queries
- self.assert_length(queries, 18)
+ self.assert_length(queries, 16)
def test_subscriptions_add_for_principal(self) -> None:
"""
@@ -3231,7 +3216,7 @@ class SubscriptionAPITest(ZulipTestCase):
[new_streams[0]],
dict(principals=ujson.dumps([user1.email, user2.email])),
)
- self.assert_length(queries, 42)
+ self.assert_length(queries, 40)
# Test creating private stream.
with queries_captured() as queries:
@@ -3269,9 +3254,9 @@ class GetStreamsTest(ZulipTestCase):
# Check it correctly lists the bot owner's subs with
# include_owner_subscribed=true
result = self.api_get(
- test_bot.email,
+ test_bot,
"/api/v1/streams?include_owner_subscribed=true&include_public=false&include_subscribed=false")
- owner_subs = self.api_get(hamlet.email, "/api/v1/users/me/subscriptions")
+ owner_subs = self.api_get(hamlet, "/api/v1/users/me/subscriptions")
self.assert_json_success(result)
json = result.json()
@@ -3288,7 +3273,7 @@ class GetStreamsTest(ZulipTestCase):
# bot's subs
self.subscribe(test_bot, 'Scotland')
result = self.api_get(
- test_bot.email,
+ test_bot,
"/api/v1/streams?include_owner_subscribed=true&include_public=false&include_subscribed=true"
)
@@ -3308,7 +3293,7 @@ class GetStreamsTest(ZulipTestCase):
self.make_stream('private_stream', realm=realm, invite_only=True)
self.subscribe(test_bot, 'private_stream')
result = self.api_get(
- test_bot.email,
+ test_bot,
"/api/v1/streams?include_owner_subscribed=true&include_public=true&include_subscribed=false"
)
@@ -3327,7 +3312,7 @@ class GetStreamsTest(ZulipTestCase):
# Check it correctly lists the bot owner's subs + all public streams +
# the bot's subs
result = self.api_get(
- test_bot.email,
+ test_bot,
"/api/v1/streams?include_owner_subscribed=true&include_public=true&include_subscribed=true"
)
@@ -3348,14 +3333,14 @@ class GetStreamsTest(ZulipTestCase):
# Check non-superuser can't use include_all_active
normal_user = self.example_user('cordelia')
- result = self.api_get(normal_user.email, url)
+ result = self.api_get(normal_user, url)
self.assertEqual(result.status_code, 400)
# Even realm admin users can't see all
# active streams (without additional privileges).
admin_user = self.example_user('iago')
self.assertTrue(admin_user.is_realm_admin)
- result = self.api_get(admin_user.email, url)
+ result = self.api_get(admin_user, url)
self.assertEqual(result.status_code, 400)
'''
@@ -3371,7 +3356,7 @@ class GetStreamsTest(ZulipTestCase):
super_user.is_api_super_user = True
super_user.save()
- result = self.api_get(super_user.email, url)
+ result = self.api_get(super_user, url)
self.assert_json_success(result)
json = result.json()
@@ -3390,13 +3375,13 @@ class GetStreamsTest(ZulipTestCase):
Ensure that the query we use to get public streams successfully returns
a list of streams
"""
- email = self.example_email('hamlet')
+ user = self.example_user('hamlet')
realm = get_realm('zulip')
- self.login(email)
+ self.login(user.email)
# Check it correctly lists the user's subs with include_public=false
- result = self.api_get(email, "/api/v1/streams?include_public=false")
- result2 = self.api_get(email, "/api/v1/users/me/subscriptions")
+ result = self.api_get(user, "/api/v1/streams?include_public=false")
+ result2 = self.api_get(user, "/api/v1/users/me/subscriptions")
self.assert_json_success(result)
json = result.json()
@@ -3412,7 +3397,7 @@ class GetStreamsTest(ZulipTestCase):
sorted([s["name"] for s in json2["subscriptions"]]))
# Check it correctly lists all public streams with include_subscribed=false
- result = self.api_get(email, "/api/v1/streams?include_public=true&include_subscribed=false")
+ result = self.api_get(user, "/api/v1/streams?include_public=true&include_subscribed=false")
self.assert_json_success(result)
json = result.json()
@@ -3468,7 +3453,7 @@ class InviteOnlyStreamTest(ZulipTestCase):
self.assert_json_success(result1)
result2 = self.common_subscribe_to_streams(user, ["Normandy"], invite_only=False)
self.assert_json_success(result2)
- result = self.api_get(user.email, "/api/v1/users/me/subscriptions")
+ result = self.api_get(user, "/api/v1/users/me/subscriptions")
self.assert_json_success(result)
self.assertIn("subscriptions", result.json())
for sub in result.json()["subscriptions"]:
@@ -3512,8 +3497,7 @@ class InviteOnlyStreamTest(ZulipTestCase):
# Inviting another user to an invite-only stream is allowed
user_profile = self.example_user('hamlet')
- email = user_profile.email
- self.login(email)
+ self.login(user_profile.email)
result = self.common_subscribe_to_streams(
user_profile, [stream_name],
extra_post_data={'principals': ujson.dumps([self.example_email("othello")])})
@@ -3524,7 +3508,7 @@ class InviteOnlyStreamTest(ZulipTestCase):
# Make sure both users are subscribed to this stream
stream_id = get_stream(stream_name, user_profile.realm).id
- result = self.api_get(email, "/api/v1/streams/%d/members" % (stream_id,))
+ result = self.api_get(user_profile, "/api/v1/streams/%d/members" % (stream_id,))
self.assert_json_success(result)
json = result.json()
@@ -3565,10 +3549,10 @@ class GetSubscribersTest(ZulipTestCase):
stream_name, realm)]
self.assertEqual(sorted(result["subscribers"]), sorted(true_subscribers))
- def make_subscriber_request(self, stream_id: int, email: Optional[str]=None) -> HttpResponse:
- if email is None:
- email = self.email
- return self.api_get(email, "/api/v1/streams/%d/members" % (stream_id,))
+ def make_subscriber_request(self, stream_id: int, user: Optional[UserProfile]=None) -> HttpResponse:
+ if user is None:
+ user = self.user_profile
+ return self.api_get(user, "/api/v1/streams/%d/members" % (stream_id,))
def make_successful_subscriber_request(self, stream_name: str) -> None:
stream_id = get_stream(stream_name, self.user_profile.realm).id
@@ -3910,11 +3894,10 @@ class GetSubscribersTest(ZulipTestCase):
self.common_subscribe_to_streams(self.user_profile, [stream_name],
invite_only=True)
user_profile = self.example_user('othello')
- other_email = user_profile.email
# Try to fetch the subscriber list as a non-member & non-realm-admin-user.
stream_id = get_stream(stream_name, user_profile.realm).id
- result = self.make_subscriber_request(stream_id, email=other_email)
+ result = self.make_subscriber_request(stream_id, user=user_profile)
self.assert_json_error(result, "Invalid stream id")
# Try to fetch the subscriber list as a non-member & realm-admin-user.
diff --git a/zerver/tests/test_thumbnail.py b/zerver/tests/test_thumbnail.py
index 1cfe2d57c1..53234fd278 100644
--- a/zerver/tests/test_thumbnail.py
+++ b/zerver/tests/test_thumbnail.py
@@ -33,7 +33,8 @@ class ThumbnailTest(ZulipTestCase):
settings.S3_AUTH_UPLOADS_BUCKET,
settings.S3_AVATAR_BUCKET)
- self.login(self.example_email("hamlet"))
+ hamlet = self.example_user('hamlet')
+ self.login(hamlet.email)
fp = StringIO("zulip!")
fp.name = "zulip.jpeg"
@@ -79,7 +80,7 @@ class ThumbnailTest(ZulipTestCase):
# Tests the /api/v1/thumbnail api endpoint with standard API auth
self.logout()
result = self.api_get(
- self.example_email("hamlet"),
+ hamlet,
'/thumbnail?url=%s&size=full' %
(quoted_uri,))
self.assertEqual(result.status_code, 302, result)
@@ -112,7 +113,7 @@ class ThumbnailTest(ZulipTestCase):
# Test api endpoint with standard API authentication.
self.logout()
user_profile = self.example_user("hamlet")
- result = self.api_get(user_profile.email,
+ result = self.api_get(user_profile,
"/thumbnail?url=%s&size=thumbnail" % (quoted_url,))
self.assertEqual(result.status_code, 302, result)
expected_part_url = '/0x300/smart/filters:no_upscale():sharpen(0.5,0.2,true)/' + encoded_url + '/source_type/external'
@@ -227,7 +228,7 @@ class ThumbnailTest(ZulipTestCase):
self.logout()
user_profile = self.example_user("hamlet")
result = self.api_get(
- self.example_email("hamlet"),
+ user_profile,
'/thumbnail?url=%s&size=full' %
(quoted_uri,))
self.assertEqual(result.status_code, 302, result)
diff --git a/zerver/tests/test_typing.py b/zerver/tests/test_typing.py
index a2e81ad84c..fa8a4a15d4 100644
--- a/zerver/tests/test_typing.py
+++ b/zerver/tests/test_typing.py
@@ -24,7 +24,7 @@ class TypingValidateOperatorTest(ZulipTestCase):
params = dict(
to=ujson.dumps([sender.id]),
)
- result = self.api_post(sender.email, '/api/v1/typing', params)
+ result = self.api_post(sender, '/api/v1/typing', params)
self.assert_json_error(result, 'Missing \'op\' argument')
def test_invalid_parameter(self) -> None:
@@ -36,7 +36,7 @@ class TypingValidateOperatorTest(ZulipTestCase):
to=ujson.dumps([sender.id]),
op='foo'
)
- result = self.api_post(sender.email, '/api/v1/typing', params)
+ result = self.api_post(sender, '/api/v1/typing', params)
self.assert_json_error(result, 'Invalid \'op\' value (should be start or stop)')
class TypingValidateUsersTest(ZulipTestCase):
@@ -44,7 +44,7 @@ class TypingValidateUsersTest(ZulipTestCase):
"""
Sending typing notification without recipient fails
"""
- sender = self.example_email("hamlet")
+ sender = self.example_user("hamlet")
result = self.api_post(sender, '/api/v1/typing', {'op': 'start', 'to': '[]'})
self.assert_json_error(result, 'Missing parameter: \'to\' (recipient)')
@@ -52,7 +52,7 @@ class TypingValidateUsersTest(ZulipTestCase):
"""
Sending typing notification without recipient fails
"""
- sender = self.example_email("hamlet")
+ sender = self.example_user("hamlet")
result = self.api_post(sender, '/api/v1/typing', {'op': 'start'})
self.assert_json_error(result, "Missing parameter: 'to' (recipient)")
@@ -60,7 +60,7 @@ class TypingValidateUsersTest(ZulipTestCase):
"""
Sending typing notification to invalid recipient fails
"""
- sender = self.example_email("hamlet")
+ sender = self.example_user("hamlet")
invalid = 'bad email'
result = self.api_post(sender, '/api/v1/typing', {'op': 'start', 'to': invalid})
self.assert_json_error(result, "Invalid email 'bad email'")
@@ -69,7 +69,7 @@ class TypingValidateUsersTest(ZulipTestCase):
"""
Sending typing notification to invalid recipient fails
"""
- sender = self.example_email("hamlet")
+ sender = self.example_user("hamlet")
invalid = '[9999999]'
result = self.api_post(sender, '/api/v1/typing', {'op': 'start', 'to': invalid})
self.assert_json_error(result, 'Invalid user ID 9999999')
@@ -90,11 +90,11 @@ class TypingHappyPathTest(ZulipTestCase):
events = [] # type: List[Mapping[str, Any]]
with queries_captured() as queries:
with tornado_redirected_to_list(events):
- result = self.api_post(sender.email, '/api/v1/typing', params)
+ result = self.api_post(sender, '/api/v1/typing', params)
self.assert_json_success(result)
self.assertEqual(len(events), 1)
- self.assertEqual(len(queries), 6)
+ self.assertEqual(len(queries), 4)
event = events[0]['event']
event_recipient_emails = set(user['email'] for user in event['recipients'])
@@ -127,10 +127,10 @@ class TypingHappyPathTest(ZulipTestCase):
with queries_captured() as queries:
with tornado_redirected_to_list(events):
- result = self.api_post(sender.email, '/api/v1/typing', params)
+ result = self.api_post(sender, '/api/v1/typing', params)
self.assert_json_success(result)
self.assertEqual(len(events), 1)
- self.assertEqual(len(queries), 7)
+ self.assertEqual(len(queries), 5)
# We should not be adding new Huddles just because
# a user started typing in the compose box. Let's
@@ -161,7 +161,7 @@ class TypingHappyPathTest(ZulipTestCase):
events = [] # type: List[Mapping[str, Any]]
with tornado_redirected_to_list(events):
result = self.api_post(
- email,
+ user,
'/api/v1/typing',
{
'to': ujson.dumps([user.id]),
@@ -201,7 +201,7 @@ class TypingHappyPathTest(ZulipTestCase):
events = [] # type: List[Mapping[str, Any]]
with tornado_redirected_to_list(events):
- result = self.api_post(sender.email, '/api/v1/typing', params)
+ result = self.api_post(sender, '/api/v1/typing', params)
self.assert_json_success(result)
self.assertEqual(len(events), 1)
@@ -234,7 +234,7 @@ class TypingHappyPathTest(ZulipTestCase):
to=ujson.dumps([user.id]),
op='stop'
)
- result = self.api_post(email, '/api/v1/typing', params)
+ result = self.api_post(user, '/api/v1/typing', params)
self.assert_json_success(result)
self.assertEqual(len(events), 1)
@@ -268,7 +268,7 @@ class TypingHappyPathTest(ZulipTestCase):
to=ujson.dumps([recipient.id]),
op='stop'
)
- result = self.api_post(sender.email, '/api/v1/typing', params)
+ result = self.api_post(sender, '/api/v1/typing', params)
self.assert_json_success(result)
self.assertEqual(len(events), 1)
@@ -305,7 +305,7 @@ class TypingLegacyMobileSupportTest(ZulipTestCase):
events = [] # type: List[Mapping[str, Any]]
with tornado_redirected_to_list(events):
- result = self.api_post(sender.email, '/api/v1/typing', params)
+ result = self.api_post(sender, '/api/v1/typing', params)
self.assert_json_success(result)
event = events[0]['event']
diff --git a/zerver/tests/test_unread.py b/zerver/tests/test_unread.py
index 18fa35fc45..adaa4e6a2a 100644
--- a/zerver/tests/test_unread.py
+++ b/zerver/tests/test_unread.py
@@ -52,7 +52,7 @@ class PointerTest(ZulipTestCase):
email = user.email
self.assertEqual(user.pointer, -1)
msg_id = self.send_stream_message(self.example_user("othello"), "Verona")
- result = self.api_post(email, "/api/v1/users/me/pointer", {"pointer": msg_id})
+ result = self.api_post(user, "/api/v1/users/me/pointer", {"pointer": msg_id})
self.assert_json_success(result)
self.assertEqual(get_user(email, user.realm).pointer, msg_id)
@@ -496,11 +496,11 @@ class PushNotificationMarkReadFlowsTest(ZulipTestCase):
second_stream = self.subscribe(user_profile, "second_stream")
property_name = "push_notifications"
- result = self.api_post(user_profile.email, "/api/v1/users/me/subscriptions/properties",
+ result = self.api_post(user_profile, "/api/v1/users/me/subscriptions/properties",
{"subscription_data": ujson.dumps([{"property": property_name,
"value": True,
"stream_id": stream.id}])})
- result = self.api_post(user_profile.email, "/api/v1/users/me/subscriptions/properties",
+ result = self.api_post(user_profile, "/api/v1/users/me/subscriptions/properties",
{"subscription_data": ujson.dumps([{"property": property_name,
"value": True,
"stream_id": second_stream.id}])})
diff --git a/zerver/tests/test_upload.py b/zerver/tests/test_upload.py
index fabda45623..d35a163952 100644
--- a/zerver/tests/test_upload.py
+++ b/zerver/tests/test_upload.py
@@ -73,7 +73,7 @@ class FileUploadTest(UploadSerializeMixin, ZulipTestCase):
fp.name = "zulip.txt"
# Upload file via API
- result = self.api_post(self.example_email("hamlet"), '/api/v1/user_uploads', {'file': fp})
+ result = self.api_post(self.example_user("hamlet"), '/api/v1/user_uploads', {'file': fp})
self.assertIn("uri", result.json())
uri = result.json()['uri']
base = '/user_uploads/'
@@ -81,7 +81,7 @@ class FileUploadTest(UploadSerializeMixin, ZulipTestCase):
# Download file via API
self.logout()
- response = self.api_get(self.example_email("hamlet"), uri)
+ response = self.api_get(self.example_user("hamlet"), uri)
self.assertEqual(response.status_code, 200)
data = b"".join(response.streaming_content)
self.assertEqual(b"zulip!", data)
@@ -100,7 +100,7 @@ class FileUploadTest(UploadSerializeMixin, ZulipTestCase):
fp.name = "zulip.txt"
# Upload file via API
- result = self.api_post(self.example_email("hamlet"), '/api/v1/user_uploads', {'file': fp})
+ result = self.api_post(self.example_user("hamlet"), '/api/v1/user_uploads', {'file': fp})
self.assertIn("uri", result.json())
uri = result.json()['uri']
base = '/user_uploads/'
@@ -127,7 +127,7 @@ class FileUploadTest(UploadSerializeMixin, ZulipTestCase):
"""
fp = StringIO("zulip!")
fp.name = "pasted_file"
- result = self.api_post(self.example_email("hamlet"),
+ result = self.api_post(self.example_user("hamlet"),
"/api/v1/user_uploads?mimetype=image/png",
{"file": fp})
self.assertEqual(result.status_code, 200)
@@ -497,7 +497,7 @@ class FileUploadTest(UploadSerializeMixin, ZulipTestCase):
def test_file_download_authorization_invite_only(self) -> None:
user = self.example_user("hamlet")
subscribed_emails = [user.email, self.example_email("cordelia")]
- unsubscribed_emails = [self.example_email("othello"), self.example_email("prospero")]
+ unsubscribed_users = [self.example_user("othello"), self.example_user("prospero")]
stream_name = "test-subscribe"
self.make_stream(stream_name, realm=user.realm, invite_only=True, history_public_to_subscribers=False)
@@ -534,17 +534,17 @@ class FileUploadTest(UploadSerializeMixin, ZulipTestCase):
self.logout()
self.assertEqual(len(queries), 6)
- def assert_cannot_access_file(user_email: str) -> None:
- response = self.api_get(user_email, uri)
+ def assert_cannot_access_file(user: UserProfile) -> None:
+ response = self.api_get(user, uri)
self.assertEqual(response.status_code, 403)
self.assert_in_response("You are not authorized to view this file.", response)
late_subscribed_user = self.example_user("aaron")
self.subscribe(late_subscribed_user, stream_name)
- assert_cannot_access_file(late_subscribed_user.email)
+ assert_cannot_access_file(late_subscribed_user)
# Unsubscribed user should not be able to view file
- for unsubscribed_user in unsubscribed_emails:
+ for unsubscribed_user in unsubscribed_users:
assert_cannot_access_file(unsubscribed_user)
def test_file_download_authorization_invite_only_with_shared_history(self) -> None:
@@ -858,8 +858,8 @@ class AvatarTest(UploadSerializeMixin, ZulipTestCase):
self.assertTrue(redirect_url.endswith(str(avatar_url(cordelia)) + '&foo=bar'))
def test_get_user_avatar(self) -> None:
- hamlet = self.example_email("hamlet")
- self.login(hamlet)
+ hamlet = self.example_user("hamlet")
+ self.login(hamlet.email)
cordelia = self.example_user('cordelia')
cross_realm_bot = get_system_bot(settings.WELCOME_BOT)
@@ -902,8 +902,8 @@ class AvatarTest(UploadSerializeMixin, ZulipTestCase):
status_code=401)
def test_get_user_avatar_medium(self) -> None:
- hamlet = self.example_email("hamlet")
- self.login(hamlet)
+ hamlet = self.example_user("hamlet")
+ self.login(hamlet.email)
cordelia = self.example_user('cordelia')
cordelia.avatar_source = UserProfile.AVATAR_FROM_USER
diff --git a/zerver/tests/test_user_groups.py b/zerver/tests/test_user_groups.py
index 55a718d07e..fdd7e3d42a 100644
--- a/zerver/tests/test_user_groups.py
+++ b/zerver/tests/test_user_groups.py
@@ -429,7 +429,7 @@ class UserGroupAPITestCase(ZulipTestCase):
)
with mock.patch('logging.info'):
- result = self.api_post(sender.email, "/json/messages", payload)
+ result = self.api_post(sender, "/json/messages", payload)
self.assert_json_success(result)
diff --git a/zerver/tests/test_users.py b/zerver/tests/test_users.py
index 3ac152a9a1..4093731e3e 100644
--- a/zerver/tests/test_users.py
+++ b/zerver/tests/test_users.py
@@ -1286,7 +1286,7 @@ class GetProfileTest(ZulipTestCase):
user_profile = self.example_user(user_id)
self.send_stream_message(user_profile, "Verona", "hello")
- result = self.api_get(user_profile.email, "/api/v1/users/me")
+ result = self.api_get(user_profile, "/api/v1/users/me")
max_id = most_recent_message(user_profile).id
@@ -1384,7 +1384,7 @@ class GetProfileTest(ZulipTestCase):
def test_get_all_profiles_avatar_urls(self) -> None:
user_profile = self.example_user('hamlet')
- result = self.api_get(self.example_email("hamlet"), "/api/v1/users")
+ result = self.api_get(self.example_user("hamlet"), "/api/v1/users")
self.assert_json_success(result)
for user in result.json()['members']:
diff --git a/zerver/tests/test_widgets.py b/zerver/tests/test_widgets.py
index b819196d0a..4cb54a541e 100644
--- a/zerver/tests/test_widgets.py
+++ b/zerver/tests/test_widgets.py
@@ -62,7 +62,7 @@ class WidgetContentTestCase(ZulipTestCase):
self.assertEqual(check_widget_content(obj), None)
def test_message_error_handling(self) -> None:
- sender_email = self.example_email('cordelia')
+ sender = self.example_user('cordelia')
stream_name = 'Verona'
payload = dict(
@@ -74,12 +74,12 @@ class WidgetContentTestCase(ZulipTestCase):
)
payload['widget_content'] = '{{{{{{' # unparsable
- result = self.api_post(sender_email, "/api/v1/messages", payload)
+ result = self.api_post(sender, "/api/v1/messages", payload)
self.assert_json_error_contains(result, 'Widgets: API programmer sent invalid JSON')
bogus_data = dict(color='red', foo='bar', x=2)
payload['widget_content'] = ujson.dumps(bogus_data)
- result = self.api_post(sender_email, "/api/v1/messages", payload)
+ result = self.api_post(sender, "/api/v1/messages", payload)
self.assert_json_error_contains(result, 'Widgets: widget_type is not in widget_content')
def test_get_widget_data_for_non_widget_messages(self) -> None:
@@ -106,7 +106,7 @@ class WidgetContentTestCase(ZulipTestCase):
# Users can send widget_content directly on messages
# using the `widget_content` field.
- sender_email = self.example_email('cordelia')
+ sender = self.example_user('cordelia')
stream_name = 'Verona'
content = 'does-not-matter'
zform_data = dict(
@@ -130,7 +130,7 @@ class WidgetContentTestCase(ZulipTestCase):
content=content,
widget_content=widget_content,
)
- result = self.api_post(sender_email, "/api/v1/messages", payload)
+ result = self.api_post(sender, "/api/v1/messages", payload)
self.assert_json_success(result)
message = self.get_last_message()
@@ -150,7 +150,7 @@ class WidgetContentTestCase(ZulipTestCase):
# and it also helps us get test coverage that could apply
# to future widgets.
- sender_email = self.example_email('cordelia')
+ sender = self.example_user('cordelia')
stream_name = 'Verona'
content = '/tictactoe'
@@ -161,7 +161,7 @@ class WidgetContentTestCase(ZulipTestCase):
topic='whatever',
content=content,
)
- result = self.api_post(sender_email, "/api/v1/messages", payload)
+ result = self.api_post(sender, "/api/v1/messages", payload)
self.assert_json_success(result)
message = self.get_last_message()
@@ -177,7 +177,7 @@ class WidgetContentTestCase(ZulipTestCase):
self.assertEqual(ujson.loads(submessage.content), expected_submessage_content)
def test_poll_command_extra_data(self) -> None:
- sender_email = self.example_email('cordelia')
+ sender = self.example_user('cordelia')
stream_name = 'Verona'
# We test for both trailing and leading spaces, along with blank lines
# for the poll options.
@@ -190,7 +190,7 @@ class WidgetContentTestCase(ZulipTestCase):
topic='whatever',
content=content,
)
- result = self.api_post(sender_email, "/api/v1/messages", payload)
+ result = self.api_post(sender, "/api/v1/messages", payload)
self.assert_json_success(result)
message = self.get_last_message()
@@ -212,7 +212,7 @@ class WidgetContentTestCase(ZulipTestCase):
content = '/poll'
payload['content'] = content
- result = self.api_post(sender_email, "/api/v1/messages", payload)
+ result = self.api_post(sender, "/api/v1/messages", payload)
self.assert_json_success(result)
expected_submessage_content = dict(
diff --git a/zerver/webhooks/beanstalk/tests.py b/zerver/webhooks/beanstalk/tests.py
index 42dfecd323..e7e9f49540 100644
--- a/zerver/webhooks/beanstalk/tests.py
+++ b/zerver/webhooks/beanstalk/tests.py
@@ -16,7 +16,7 @@ class BeanstalkHookTests(WebhookTestCase):
expected_message = """Leo Franchi [pushed](http://lfranchi-svn.beanstalkapp.com/work-test) 1 commit to branch master.
* add some stuff ([e50508d](http://lfranchi-svn.beanstalkapp.com/work-test/changesets/e50508df))"""
- self.api_stream_message(self.TEST_USER_EMAIL, 'git_singlecommit', expected_topic, expected_message,
+ self.api_stream_message(self.test_user, 'git_singlecommit', expected_topic, expected_message,
content_type=None)
def test_git_single_filtered_by_branches(self) -> None:
@@ -25,7 +25,7 @@ class BeanstalkHookTests(WebhookTestCase):
expected_message = """Leo Franchi [pushed](http://lfranchi-svn.beanstalkapp.com/work-test) 1 commit to branch master.
* add some stuff ([e50508d](http://lfranchi-svn.beanstalkapp.com/work-test/changesets/e50508df))"""
- self.api_stream_message(self.TEST_USER_EMAIL, 'git_singlecommit', expected_topic, expected_message,
+ self.api_stream_message(self.test_user, 'git_singlecommit', expected_topic, expected_message,
content_type=None)
def test_git_multiple_committers(self) -> None:
@@ -35,7 +35,7 @@ class BeanstalkHookTests(WebhookTestCase):
* Added new file ([edf529c](http://lfranchi-svn.beanstalkapp.com/work-test/changesets/edf529c7))
* Filled in new file with some stuff ([c2a191b](http://lfranchi-svn.beanstalkapp.com/work-test/changesets/c2a191b9))
* More work to fix some bugs ([2009815](http://lfranchi-svn.beanstalkapp.com/work-test/changesets/20098158))"""
- self.api_stream_message(self.TEST_USER_EMAIL, 'git_multiple_committers', expected_topic, expected_message,
+ self.api_stream_message(self.test_user, 'git_multiple_committers', expected_topic, expected_message,
content_type=None)
def test_git_multiple_committers_filtered_by_branches(self) -> None:
@@ -46,7 +46,7 @@ class BeanstalkHookTests(WebhookTestCase):
* Added new file ([edf529c](http://lfranchi-svn.beanstalkapp.com/work-test/changesets/edf529c7))
* Filled in new file with some stuff ([c2a191b](http://lfranchi-svn.beanstalkapp.com/work-test/changesets/c2a191b9))
* More work to fix some bugs ([2009815](http://lfranchi-svn.beanstalkapp.com/work-test/changesets/20098158))"""
- self.api_stream_message(self.TEST_USER_EMAIL, 'git_multiple_committers', expected_topic, expected_message,
+ self.api_stream_message(self.test_user, 'git_multiple_committers', expected_topic, expected_message,
content_type=None)
def test_git_multiple(self) -> None:
@@ -56,7 +56,7 @@ class BeanstalkHookTests(WebhookTestCase):
* Added new file ([edf529c](http://lfranchi-svn.beanstalkapp.com/work-test/changesets/edf529c7))
* Filled in new file with some stuff ([c2a191b](http://lfranchi-svn.beanstalkapp.com/work-test/changesets/c2a191b9))
* More work to fix some bugs ([2009815](http://lfranchi-svn.beanstalkapp.com/work-test/changesets/20098158))"""
- self.api_stream_message(self.TEST_USER_EMAIL, 'git_multiple', expected_topic, expected_message,
+ self.api_stream_message(self.test_user, 'git_multiple', expected_topic, expected_message,
content_type=None)
def test_git_multiple_filtered_by_branches(self) -> None:
@@ -67,7 +67,7 @@ class BeanstalkHookTests(WebhookTestCase):
* Added new file ([edf529c](http://lfranchi-svn.beanstalkapp.com/work-test/changesets/edf529c7))
* Filled in new file with some stuff ([c2a191b](http://lfranchi-svn.beanstalkapp.com/work-test/changesets/c2a191b9))
* More work to fix some bugs ([2009815](http://lfranchi-svn.beanstalkapp.com/work-test/changesets/20098158))"""
- self.api_stream_message(self.TEST_USER_EMAIL, 'git_multiple', expected_topic, expected_message,
+ self.api_stream_message(self.test_user, 'git_multiple', expected_topic, expected_message,
content_type=None)
def test_git_more_than_limit(self) -> None:
@@ -76,7 +76,7 @@ class BeanstalkHookTests(WebhookTestCase):
expected_message = """Leo Franchi [pushed](http://lfranchi-svn.beanstalkapp.com/work-test) 50 commits to branch master.
{}[and {} more commit(s)]""".format((commits_info * COMMITS_LIMIT), 50 - COMMITS_LIMIT)
- self.api_stream_message(self.TEST_USER_EMAIL, 'git_morethanlimitcommits', expected_topic, expected_message,
+ self.api_stream_message(self.test_user, 'git_morethanlimitcommits', expected_topic, expected_message,
content_type=None)
def test_git_more_than_limit_filtered_by_branches(self) -> None:
@@ -86,14 +86,14 @@ class BeanstalkHookTests(WebhookTestCase):
expected_message = """Leo Franchi [pushed](http://lfranchi-svn.beanstalkapp.com/work-test) 50 commits to branch master.
{}[and {} more commit(s)]""".format((commits_info * COMMITS_LIMIT), 50 - COMMITS_LIMIT)
- self.api_stream_message(self.TEST_USER_EMAIL, 'git_morethanlimitcommits', expected_topic, expected_message,
+ self.api_stream_message(self.test_user, 'git_morethanlimitcommits', expected_topic, expected_message,
content_type=None)
@patch('zerver.webhooks.beanstalk.view.check_send_webhook_message')
def test_git_single_filtered_by_branches_ignore(self, check_send_webhook_message_mock: MagicMock) -> None:
self.url = self.build_webhook_url(branches='changes,development')
payload = self.get_body('git_singlecommit')
- result = self.api_post(self.TEST_USER_EMAIL, self.url, payload)
+ result = self.api_post(self.test_user, self.url, payload)
self.assertFalse(check_send_webhook_message_mock.called)
self.assert_json_success(result)
@@ -102,7 +102,7 @@ class BeanstalkHookTests(WebhookTestCase):
self, check_send_webhook_message_mock: MagicMock) -> None:
self.url = self.build_webhook_url(branches='changes,development')
payload = self.get_body('git_multiple_committers')
- result = self.api_post(self.TEST_USER_EMAIL, self.url, payload)
+ result = self.api_post(self.test_user, self.url, payload)
self.assertFalse(check_send_webhook_message_mock.called)
self.assert_json_success(result)
@@ -111,7 +111,7 @@ class BeanstalkHookTests(WebhookTestCase):
self, check_send_webhook_message_mock: MagicMock) -> None:
self.url = self.build_webhook_url(branches='changes,development')
payload = self.get_body('git_multiple')
- result = self.api_post(self.TEST_USER_EMAIL, self.url, payload)
+ result = self.api_post(self.test_user, self.url, payload)
self.assertFalse(check_send_webhook_message_mock.called)
self.assert_json_success(result)
@@ -120,7 +120,7 @@ class BeanstalkHookTests(WebhookTestCase):
self, check_send_webhook_message_mock: MagicMock) -> None:
self.url = self.build_webhook_url(branches='changes,development')
payload = self.get_body('git_morethanlimitcommits')
- result = self.api_post(self.TEST_USER_EMAIL, self.url, payload)
+ result = self.api_post(self.test_user, self.url, payload)
self.assertFalse(check_send_webhook_message_mock.called)
self.assert_json_success(result)
@@ -129,7 +129,7 @@ class BeanstalkHookTests(WebhookTestCase):
expected_message = """Leo Franchi pushed [revision 3](http://lfranchi-svn.beanstalkapp.com/work-test/changesets/3):
> Removed a file and added another one!"""
- self.api_stream_message(self.TEST_USER_EMAIL, 'svn_addremove', expected_topic, expected_message,
+ self.api_stream_message(self.test_user, 'svn_addremove', expected_topic, expected_message,
content_type=None)
def test_svn_changefile(self) -> None:
@@ -137,7 +137,7 @@ class BeanstalkHookTests(WebhookTestCase):
expected_message = """Leo Franchi pushed [revision 2](http://lfranchi-svn.beanstalkapp.com/work-test/changesets/2):
> Added some code"""
- self.api_stream_message(self.TEST_USER_EMAIL, 'svn_changefile', expected_topic, expected_message,
+ self.api_stream_message(self.test_user, 'svn_changefile', expected_topic, expected_message,
content_type=None)
def get_body(self, fixture_name: str) -> Dict[str, str]:
diff --git a/zerver/webhooks/bitbucket/tests.py b/zerver/webhooks/bitbucket/tests.py
index f6901f5e9e..6dddc1dd33 100644
--- a/zerver/webhooks/bitbucket/tests.py
+++ b/zerver/webhooks/bitbucket/tests.py
@@ -18,7 +18,7 @@ class BitbucketHookTests(WebhookTestCase):
self.url = self.build_webhook_url(payload=self.get_body(fixture_name))
commit_info = u'* c ([25f93d2](https://bitbucket.org/kolaszek/repository-name/commits/25f93d22b719e2d678a7ad5ee0ef0d1fcdf39c12))'
expected_message = u"kolaszek pushed 1 commit to branch master.\n\n{}".format(commit_info)
- self.api_stream_message(self.TEST_USER_EMAIL, fixture_name, self.EXPECTED_TOPIC_BRANCH_EVENTS,
+ self.api_stream_message(self.test_user, fixture_name, self.EXPECTED_TOPIC_BRANCH_EVENTS,
expected_message)
def test_bitbucket_on_push_event_without_user_info(self) -> None:
@@ -26,7 +26,7 @@ class BitbucketHookTests(WebhookTestCase):
self.url = self.build_webhook_url(payload=self.get_body(fixture_name))
commit_info = u'* c ([25f93d2](https://bitbucket.org/kolaszek/repository-name/commits/25f93d22b719e2d678a7ad5ee0ef0d1fcdf39c12))'
expected_message = u"Someone pushed 1 commit to branch master. Commits by eeshangarg (1).\n\n{}".format(commit_info)
- self.api_stream_message(self.TEST_USER_EMAIL, fixture_name, self.EXPECTED_TOPIC_BRANCH_EVENTS,
+ self.api_stream_message(self.test_user, fixture_name, self.EXPECTED_TOPIC_BRANCH_EVENTS,
expected_message)
def test_bitbucket_on_push_event_filtered_by_branches(self) -> None:
@@ -35,7 +35,7 @@ class BitbucketHookTests(WebhookTestCase):
branches='master,development')
commit_info = u'* c ([25f93d2](https://bitbucket.org/kolaszek/repository-name/commits/25f93d22b719e2d678a7ad5ee0ef0d1fcdf39c12))'
expected_message = u"kolaszek pushed 1 commit to branch master.\n\n{}".format(commit_info)
- self.api_stream_message(self.TEST_USER_EMAIL, fixture_name, self.EXPECTED_TOPIC_BRANCH_EVENTS,
+ self.api_stream_message(self.test_user, fixture_name, self.EXPECTED_TOPIC_BRANCH_EVENTS,
expected_message)
def test_bitbucket_on_push_commits_above_limit_event(self) -> None:
@@ -43,7 +43,7 @@ class BitbucketHookTests(WebhookTestCase):
self.url = self.build_webhook_url(payload=self.get_body(fixture_name))
commit_info = u'* c ([25f93d2](https://bitbucket.org/kolaszek/repository-name/commits/25f93d22b719e2d678a7ad5ee0ef0d1fcdf39c12))\n'
expected_message = u"kolaszek pushed 50 commits to branch master.\n\n{}[and 30 more commit(s)]".format(commit_info * 20)
- self.api_stream_message(self.TEST_USER_EMAIL, fixture_name, self.EXPECTED_TOPIC_BRANCH_EVENTS,
+ self.api_stream_message(self.test_user, fixture_name, self.EXPECTED_TOPIC_BRANCH_EVENTS,
expected_message)
def test_bitbucket_on_push_commits_above_limit_event_filtered_by_branches(self) -> None:
@@ -52,21 +52,21 @@ class BitbucketHookTests(WebhookTestCase):
branches='master,development')
commit_info = u'* c ([25f93d2](https://bitbucket.org/kolaszek/repository-name/commits/25f93d22b719e2d678a7ad5ee0ef0d1fcdf39c12))\n'
expected_message = u"kolaszek pushed 50 commits to branch master.\n\n{}[and 30 more commit(s)]".format(commit_info * 20)
- self.api_stream_message(self.TEST_USER_EMAIL, fixture_name, self.EXPECTED_TOPIC_BRANCH_EVENTS,
+ self.api_stream_message(self.test_user, fixture_name, self.EXPECTED_TOPIC_BRANCH_EVENTS,
expected_message)
def test_bitbucket_on_force_push_event(self) -> None:
fixture_name = 'force_push'
self.url = self.build_webhook_url(payload=self.get_body(fixture_name))
expected_message = u"kolaszek [force pushed](https://bitbucket.org/kolaszek/repository-name)."
- self.api_stream_message(self.TEST_USER_EMAIL, fixture_name, self.EXPECTED_TOPIC,
+ self.api_stream_message(self.test_user, fixture_name, self.EXPECTED_TOPIC,
expected_message)
def test_bitbucket_on_force_push_event_without_user_info(self) -> None:
fixture_name = 'force_push_without_user_info'
self.url = self.build_webhook_url(payload=self.get_body(fixture_name))
expected_message = u"Someone [force pushed](https://bitbucket.org/kolaszek/repository-name/)."
- self.api_stream_message(self.TEST_USER_EMAIL, fixture_name, self.EXPECTED_TOPIC,
+ self.api_stream_message(self.test_user, fixture_name, self.EXPECTED_TOPIC,
expected_message)
@patch('zerver.webhooks.bitbucket.view.check_send_webhook_message')
@@ -75,7 +75,7 @@ class BitbucketHookTests(WebhookTestCase):
payload = self.get_body(fixture_name)
self.url = self.build_webhook_url(payload=payload,
branches='changes,development')
- result = self.api_post(self.TEST_USER_EMAIL, self.url, payload, content_type="application/json,")
+ result = self.api_post(self.test_user, self.url, payload, content_type="application/json,")
self.assertFalse(check_send_webhook_message_mock.called)
self.assert_json_success(result)
@@ -86,7 +86,7 @@ class BitbucketHookTests(WebhookTestCase):
payload = self.get_body(fixture_name)
self.url = self.build_webhook_url(payload=payload,
branches='changes,development')
- result = self.api_post(self.TEST_USER_EMAIL, self.url, payload, content_type="application/json,")
+ result = self.api_post(self.test_user, self.url, payload, content_type="application/json,")
self.assertFalse(check_send_webhook_message_mock.called)
self.assert_json_success(result)
diff --git a/zerver/webhooks/deskdotcom/tests.py b/zerver/webhooks/deskdotcom/tests.py
index a8d7b74c92..f067472e20 100644
--- a/zerver/webhooks/deskdotcom/tests.py
+++ b/zerver/webhooks/deskdotcom/tests.py
@@ -21,7 +21,7 @@ class DeskDotComHookTests(WebhookTestCase):
expected_topic = u"static text notification"
expected_message = u"This is a custom action."
- self.api_stream_message(self.TEST_USER_EMAIL, 'static_text', expected_topic, expected_message,
+ self.api_stream_message(self.test_user, 'static_text', expected_topic, expected_message,
content_type="application/x-www-form-urlencoded")
def test_case_updated_message(self) -> None:
@@ -30,7 +30,7 @@ class DeskDotComHookTests(WebhookTestCase):
u"Link: "
u"I have a question")
- self.api_stream_message(self.TEST_USER_EMAIL, 'case_updated', expected_topic, expected_message,
+ self.api_stream_message(self.test_user, 'case_updated', expected_topic, expected_message,
content_type="application/x-www-form-urlencoded")
def test_unicode_text_italian(self) -> None:
@@ -40,7 +40,7 @@ class DeskDotComHookTests(WebhookTestCase):
u"Link: "
u"Il mio hovercraft è pieno di anguille.")
- self.api_stream_message(self.TEST_USER_EMAIL, 'unicode_text_italian', expected_topic, expected_message,
+ self.api_stream_message(self.test_user, 'unicode_text_italian', expected_topic, expected_message,
content_type="application/x-www-form-urlencoded")
def test_unicode_text_japanese(self) -> None:
@@ -50,7 +50,7 @@ class DeskDotComHookTests(WebhookTestCase):
u"Link: "
u"私のホバークラフトは鰻でいっぱいです")
- self.api_stream_message(self.TEST_USER_EMAIL, 'unicode_text_japanese', expected_topic, expected_message,
+ self.api_stream_message(self.test_user, 'unicode_text_japanese', expected_topic, expected_message,
content_type="application/x-www-form-urlencoded")
def get_body(self, fixture_name: str) -> str:
diff --git a/zerver/webhooks/freshdesk/tests.py b/zerver/webhooks/freshdesk/tests.py
index 1c2378abad..cd3707af61 100644
--- a/zerver/webhooks/freshdesk/tests.py
+++ b/zerver/webhooks/freshdesk/tests.py
@@ -26,7 +26,7 @@ Test ticket description ☃.
* **Status**: Pending
""".strip()
- self.api_stream_message(self.TEST_USER_EMAIL, 'ticket_created', expected_topic, expected_message,
+ self.api_stream_message(self.test_user, 'ticket_created', expected_topic, expected_message,
content_type="application/x-www-form-urlencoded")
def test_status_change(self) -> None:
@@ -41,7 +41,7 @@ Requester Bob updated [ticket #11](http://test1234zz
* **Status**: Resolved -> Waiting on Customer
""".strip()
- self.api_stream_message(self.TEST_USER_EMAIL, 'status_changed', expected_topic, expected_message,
+ self.api_stream_message(self.test_user, 'status_changed', expected_topic, expected_message,
content_type="application/x-www-form-urlencoded")
def test_status_change_fixture_without_required_key(self) -> None:
@@ -51,7 +51,7 @@ Requester Bob updated [ticket #11](http://test1234zz
self.url = self.build_webhook_url()
payload = self.get_body('status_changed_fixture_with_missing_key')
kwargs = {
- 'HTTP_AUTHORIZATION': self.encode_email(self.TEST_USER_EMAIL),
+ 'HTTP_AUTHORIZATION': self.encode_email(self.test_user.email),
'content_type': 'application/x-www-form-urlencoded',
}
result = self.client_post(self.url, payload, **kwargs)
@@ -68,7 +68,7 @@ Requester Bob updated [ticket #11](http://test1234zz
* **Priority**: High -> Low
""".strip()
- self.api_stream_message(self.TEST_USER_EMAIL, 'priority_changed', expected_topic, expected_message,
+ self.api_stream_message(self.test_user, 'priority_changed', expected_topic, expected_message,
content_type="application/x-www-form-urlencoded")
@patch('zerver.lib.webhooks.common.check_send_webhook_message')
@@ -80,7 +80,7 @@ Requester Bob updated [ticket #11](http://test1234zz
self.url = self.build_webhook_url()
payload = self.get_body('unknown_payload')
kwargs = {
- 'HTTP_AUTHORIZATION': self.encode_email(self.TEST_USER_EMAIL),
+ 'HTTP_AUTHORIZATION': self.encode_email(self.test_user.email),
'content_type': 'application/x-www-form-urlencoded',
}
result = self.client_post(self.url, payload, **kwargs)
@@ -97,7 +97,7 @@ Requester Bob updated [ticket #11](http://test1234zz
Requester Bob added a {} note to \
[ticket #11](http://test1234zzz.freshdesk.com/helpdesk/tickets/11).
""".strip().format(note_type)
- self.api_stream_message(self.TEST_USER_EMAIL, fixture, expected_topic, expected_message,
+ self.api_stream_message(self.test_user, fixture, expected_topic, expected_message,
content_type="application/x-www-form-urlencoded")
def test_private_note_change(self) -> None:
@@ -116,7 +116,7 @@ Requester Bob added a {} note to \
expected_message = """
Requester \u2603 Bob created [ticket #12](http://test1234zzz.freshdesk.com/helpdesk/tickets/12):\n\n``` quote\nThere are too many cat pictures on the internet \u2603. We need more guinea pigs.\nExhibit 1:\n\n \n\n[guinea_pig.png](http://cdn.freshdesk.com/data/helpdesk/attachments/production/12744808/original/guinea_pig.png)\n```\n\n* **Type**: Problem\n* **Priority**: Urgent\n* **Status**: Open
""".strip()
- self.api_stream_message(self.TEST_USER_EMAIL, "inline_images", expected_topic, expected_message,
+ self.api_stream_message(self.test_user, "inline_images", expected_topic, expected_message,
content_type="application/x-www-form-urlencoded")
def get_body(self, fixture_name: str) -> str:
diff --git a/zerver/webhooks/zendesk/tests.py b/zerver/webhooks/zendesk/tests.py
index 43c69917cf..d3c25fe029 100644
--- a/zerver/webhooks/zendesk/tests.py
+++ b/zerver/webhooks/zendesk/tests.py
@@ -26,7 +26,7 @@ class ZenDeskHookTests(WebhookTestCase):
}
def do_test(self, expected_topic: Optional[str]=None, expected_message: Optional[str]=None) -> None:
- self.api_stream_message(self.TEST_USER_EMAIL, "", expected_topic, expected_message,
+ self.api_stream_message(self.test_user, "", expected_topic, expected_message,
content_type=None)
self.TICKET_TITLE = self.DEFAULT_TICKET_TITLE
self.TICKET_ID = self.DEFAULT_TICKET_ID