populate_db: Add new admin user as 'Desdemona'.

This commit adds a second admin user named 'Desdemona' to dev and
test database.
This commit is contained in:
sahil839
2020-05-17 22:16:14 +05:30
committed by Tim Abbott
parent 36dca5ba5c
commit 9b78a73e36
9 changed files with 53 additions and 40 deletions

View File

@@ -18,7 +18,7 @@ from zerver.lib.test_classes import ZulipTestCase
from zerver.lib.timestamp import ceiling_to_day, \
ceiling_to_hour, datetime_to_timestamp
from zerver.lib.actions import do_create_multiuse_invite_link, \
do_send_realm_reactivation_email, do_change_is_admin
do_send_realm_reactivation_email
from zerver.models import Client, get_realm, MultiuseInvite
class TestStatsEndpoint(ZulipTestCase):
@@ -403,8 +403,8 @@ class TestSupportEndpoint(ZulipTestCase):
def check_hamlet_user_query_result(result: HttpResponse) -> None:
self.assert_in_success_response(['<span class="label">user</span>\n', '<h3>King Hamlet</h3>',
'<b>Email</b>: hamlet@zulip.com', '<b>Is active</b>: True<br>',
'<b>Admins</b>: iago@zulip.com, othello@zulip.com\n',
'class="copy-button" data-copytext="iago@zulip.com, othello@zulip.com"'
'<b>Admins</b>: desdemona@zulip.com, iago@zulip.com\n',
'class="copy-button" data-copytext="desdemona@zulip.com, iago@zulip.com"'
], result)
def check_zulip_realm_query_result(result: HttpResponse) -> None:
@@ -464,9 +464,6 @@ class TestSupportEndpoint(ZulipTestCase):
'<b>Expires in</b>: 1\xa0day'
], result)
othello = self.example_user('othello')
do_change_is_admin(othello, True)
self.login('cordelia')
result = self.client_get("/activity/support")

View File

@@ -247,6 +247,7 @@ class ZulipTestCase(TestCase):
aaron='aaron@zulip.com',
ZOE='ZOE@zulip.com',
polonius='polonius@zulip.com',
desdemona='desdemona@zulip.com',
webhook_bot='webhook-bot@zulip.com',
welcome_bot='welcome-bot@zulip.com',
outgoing_webhook_bot='outgoing-webhook@zulip.com',

View File

@@ -603,11 +603,11 @@ def send_message(client: Client) -> int:
assert result['result'] == 'success'
assert result['raw_content'] == request['content']
ensure_users([9], ['hamlet'])
ensure_users([10], ['hamlet'])
# {code_example|start}
# Send a private message
user_id = 9
user_id = 10
request = {
"type": "private",
"to": [user_id],
@@ -896,12 +896,12 @@ def get_stream_topics(client: Client, stream_id: int) -> None:
@openapi_test_function("/typing:post")
def set_typing_status(client: Client) -> None:
ensure_users([9, 10], ['hamlet', 'iago'])
ensure_users([10, 11], ['hamlet', 'iago'])
# {code_example|start}
# The user has started to type in the group PM with Iago and Polonius
user_id1 = 9
user_id2 = 10
user_id1 = 10
user_id2 = 11
request = {
'op': 'start',
@@ -914,8 +914,8 @@ def set_typing_status(client: Client) -> None:
# {code_example|start}
# The user has finished typing in the group PM with Iago and Polonius
user_id1 = 9
user_id2 = 10
user_id1 = 10
user_id2 = 11
request = {
'op': 'stop',
@@ -969,13 +969,13 @@ def remove_alert_words(client: Client) -> None:
@openapi_test_function("/user_groups/create:post")
def create_user_group(client: Client) -> None:
ensure_users([6, 7, 8, 9], ['aaron', 'zoe', 'cordelia', 'hamlet'])
ensure_users([6, 7, 8, 10], ['aaron', 'zoe', 'cordelia', 'hamlet'])
# {code_example|start}
request = {
'name': 'marketing',
'description': 'The marketing team.',
'members': [6, 7, 8, 9],
'members': [6, 7, 8, 10],
}
result = client.create_user_group(request)
@@ -1008,12 +1008,12 @@ def remove_user_group(client: Client, group_id: int) -> None:
@openapi_test_function("/user_groups/{group_id}/members:post")
def update_user_group_members(client: Client, group_id: int) -> None:
ensure_users([8, 9, 10], ['cordelia', 'hamlet', 'iago'])
ensure_users([8, 10, 11], ['cordelia', 'hamlet', 'iago'])
request = {
'group_id': group_id,
'delete': [8, 9],
'add': [10]
'delete': [8, 10],
'add': [11]
}
result = client.update_user_group_members(request)

View File

@@ -3693,7 +3693,7 @@ components:
The target user's ID.
schema:
type: integer
example: 11
example: 12
required: true
StreamPostPolicy:
name: stream_post_policy

View File

@@ -3717,6 +3717,9 @@ class DeactivateUserTest(ZulipTestCase):
def test_do_not_deactivate_final_admin(self) -> None:
user = self.example_user('iago')
user_2 = self.example_user('desdemona')
do_change_is_admin(user_2, False)
self.assertFalse(user_2.is_realm_admin)
self.login_user(user)
self.assertTrue(user.is_active)
result = self.client_delete('/json/users/me')
@@ -3724,7 +3727,6 @@ class DeactivateUserTest(ZulipTestCase):
user = self.example_user('iago')
self.assertTrue(user.is_active)
self.assertTrue(user.is_realm_admin)
user_2 = self.example_user('hamlet')
do_change_is_admin(user_2, True)
self.assertTrue(user_2.is_realm_admin)
result = self.client_delete('/json/users/me')
@@ -3733,6 +3735,7 @@ class DeactivateUserTest(ZulipTestCase):
def test_do_not_deactivate_final_user(self) -> None:
realm = get_realm('zulip')
do_change_is_admin(self.example_user("desdemona"), False)
UserProfile.objects.filter(realm=realm).exclude(
role=UserProfile.ROLE_REALM_ADMINISTRATOR).update(is_active=False)
user = self.example_user("iago")

View File

@@ -58,6 +58,7 @@ class UserSoftDeactivationTests(ZulipTestCase):
self.example_user('prospero'),
self.example_user('aaron'),
self.example_user('polonius'),
self.example_user('desdemona'),
]
client, _ = Client.objects.get_or_create(name='website')
query = '/json/users/me/pointer'
@@ -74,7 +75,7 @@ class UserSoftDeactivationTests(ZulipTestCase):
filter_kwargs = dict(user_profile__realm=get_realm('zulip'))
users_to_deactivate = get_users_for_soft_deactivation(-1, filter_kwargs)
self.assert_length(users_to_deactivate, 8)
self.assert_length(users_to_deactivate, 9)
for user in users_to_deactivate:
self.assertTrue(user in users)
@@ -108,6 +109,7 @@ class UserSoftDeactivationTests(ZulipTestCase):
self.example_user('prospero'),
self.example_user('aaron'),
self.example_user('polonius'),
self.example_user('desdemona'),
]
for user_profile in UserProfile.objects.all():
user_profile.long_term_idle = True
@@ -116,7 +118,7 @@ class UserSoftDeactivationTests(ZulipTestCase):
filter_kwargs = dict(realm=get_realm('zulip'))
users_to_catch_up = get_soft_deactivated_users_for_catch_up(filter_kwargs)
self.assert_length(users_to_catch_up, 8)
self.assert_length(users_to_catch_up, 9)
for user in users_to_catch_up:
self.assertTrue(user in users)
@@ -157,6 +159,7 @@ class UserSoftDeactivationTests(ZulipTestCase):
self.example_user('prospero'),
self.example_user('aaron'),
self.example_user('polonius'),
self.example_user('desdemona'),
]
sender = self.example_user('hamlet')
realm = get_realm('zulip')

View File

@@ -134,7 +134,9 @@ class TestCreateStreams(ZulipTestCase):
self.assertEqual(events[0]['event']['type'], 'stream')
self.assertEqual(events[0]['event']['op'], 'create')
# Send private stream creation event to only realm admins.
self.assertEqual(events[0]['users'], [self.example_user("iago").id])
self.assertEqual(len(events[0]['users']), 2)
self.assertTrue(self.example_user("iago").id in events[0]['users'])
self.assertTrue(self.example_user("desdemona").id in events[0]['users'])
self.assertEqual(events[0]['event']['streams'][0]['name'], "Private stream")
new_streams, existing_streams = create_streams_if_needed(
@@ -2496,7 +2498,7 @@ class SubscriptionAPITest(ZulipTestCase):
)
self.assertNotIn(self.example_user('polonius').id, add_peer_event['users'])
self.assertEqual(len(add_peer_event['users']), 10)
self.assertEqual(len(add_peer_event['users']), 11)
self.assertEqual(add_peer_event['event']['type'], 'subscription')
self.assertEqual(add_peer_event['event']['op'], 'peer_add')
self.assertEqual(add_peer_event['event']['user_id'], self.user_profile.id)
@@ -2528,7 +2530,7 @@ class SubscriptionAPITest(ZulipTestCase):
# We don't send a peer_add event to othello
self.assertNotIn(user_profile.id, add_peer_event['users'])
self.assertNotIn(self.example_user('polonius').id, add_peer_event['users'])
self.assertEqual(len(add_peer_event['users']), 10)
self.assertEqual(len(add_peer_event['users']), 11)
self.assertEqual(add_peer_event['event']['type'], 'subscription')
self.assertEqual(add_peer_event['event']['op'], 'peer_add')
self.assertEqual(add_peer_event['event']['user_id'], user_profile.id)
@@ -2569,7 +2571,7 @@ class SubscriptionAPITest(ZulipTestCase):
# We don't send a peer_add event to othello, but we do send peer_add event to
# all realm admins.
self.assertNotIn(user_profile.id, add_peer_event['users'])
self.assertEqual(len(add_peer_event['users']), 2)
self.assertEqual(len(add_peer_event['users']), 3)
self.assertEqual(add_peer_event['event']['type'], 'subscription')
self.assertEqual(add_peer_event['event']['op'], 'peer_add')
self.assertEqual(add_peer_event['event']['user_id'], user_profile.id)
@@ -2582,8 +2584,8 @@ class SubscriptionAPITest(ZulipTestCase):
with tornado_redirected_to_list(events):
bulk_add_subscriptions([new_stream], [self.example_user("iago")])
self.assert_length(events, 2)
create_event, add_event = events
self.assert_length(events, 3)
create_event, add_event, add_peer_event = events
self.assertEqual(create_event['event']['type'], 'stream')
self.assertEqual(create_event['event']['op'], 'create')
self.assertEqual(create_event['users'], [])
@@ -2592,6 +2594,11 @@ class SubscriptionAPITest(ZulipTestCase):
self.assertEqual(add_event['event']['op'], 'add')
self.assertEqual(add_event['users'], [self.example_user("iago").id])
self.assertEqual(len(add_peer_event['users']), 1)
self.assertEqual(add_peer_event['event']['type'], 'subscription')
self.assertEqual(add_peer_event['event']['op'], 'peer_add')
self.assertEqual(add_peer_event['event']['user_id'], self.example_user("iago").id)
def test_subscribe_to_stream_post_policy_admins_stream(self) -> None:
"""
Members can subscribe to streams where only admins can post

View File

@@ -128,22 +128,20 @@ class PermissionTest(ZulipTestCase):
self.assert_json_error(result, 'No such user')
def test_admin_api(self) -> None:
self.login('hamlet')
self.login('desdemona')
hamlet = self.example_user('hamlet')
othello = self.example_user('othello')
iago = self.example_user('iago')
desdemona = self.example_user('desdemona')
realm = hamlet.realm
# Make hamlet an additional admin
do_change_is_admin(hamlet, True)
# Make sure we see is_admin flag in /json/users
result = self.client_get('/json/users')
self.assert_json_success(result)
members = result.json()['members']
hamlet_dict = find_dict(members, 'email', hamlet.email)
self.assertTrue(hamlet_dict['is_admin'])
desdemona_dict = find_dict(members, 'email', desdemona.email)
self.assertTrue(desdemona_dict['is_admin'])
othello_dict = find_dict(members, 'email', othello.email)
self.assertFalse(othello_dict['is_admin'])
@@ -177,12 +175,12 @@ class PermissionTest(ZulipTestCase):
req = dict(is_admin=ujson.dumps(False))
events = []
with tornado_redirected_to_list(events):
result = self.client_patch('/json/users/{}'.format(hamlet.id), req)
result = self.client_patch('/json/users/{}'.format(desdemona.id), req)
self.assert_json_success(result)
admin_users = realm.get_human_admin_users()
self.assertFalse(hamlet in admin_users)
self.assertFalse(desdemona in admin_users)
person = events[0]['event']['person']
self.assertEqual(person['user_id'], hamlet.id)
self.assertEqual(person['user_id'], desdemona.id)
self.assertEqual(person['is_admin'], False)
with tornado_redirected_to_list([]):
result = self.client_patch('/json/users/{}'.format(iago.id), req)
@@ -1016,9 +1014,8 @@ class ActivateTest(ZulipTestCase):
self.assertTrue(user.is_active)
def test_api_with_nonexistent_user(self) -> None:
admin = self.example_user('othello')
do_change_is_admin(admin, True)
self.login('othello')
admin = self.example_user('desdemona')
self.login_user(admin)
# Cannot deactivate a user with the bot api
result = self.client_delete('/json/bots/{}'.format(self.example_user("hamlet").id))

View File

@@ -238,6 +238,7 @@ class Command(BaseCommand):
("King Hamlet", "hamlet@zulip.com"),
("aaron", "AARON@zulip.com"),
("Polonius", "polonius@zulip.com"),
("Desdemona", "desdemona@zulip.com"),
]
# For testing really large batches:
@@ -281,6 +282,9 @@ class Command(BaseCommand):
iago.is_staff = True
iago.save(update_fields=['is_staff'])
desdemona = get_user_by_delivery_email("desdemona@zulip.com", zulip_realm)
do_change_is_admin(desdemona, True)
guest_user = get_user_by_delivery_email("polonius@zulip.com", zulip_realm)
guest_user.role = UserProfile.ROLE_GUEST
guest_user.save(update_fields=['role'])
@@ -356,6 +360,7 @@ class Command(BaseCommand):
'prospero@zulip.com': ['Verona', 'Denmark', 'Scotland', 'Venice'],
'ZOE@zulip.com': ['Verona', 'Denmark', 'Scotland', 'Venice', 'Rome'],
'polonius@zulip.com': ['Verona'],
'desdemona@zulip.com': ['Verona', 'Denmark', 'Venice'],
}
for profile in profiles: