mirror of https://github.com/zulip/zulip.git
test_counts: Create audit log entries when creating users.
This commit is contained in:
parent
3ea0d73182
commit
7ad967ebc7
|
@ -60,6 +60,7 @@ from zerver.lib.push_notifications import (
|
||||||
from zerver.lib.test_classes import ZulipTestCase
|
from zerver.lib.test_classes import ZulipTestCase
|
||||||
from zerver.lib.timestamp import TimeZoneNotUTCError, ceiling_to_day, floor_to_day
|
from zerver.lib.timestamp import TimeZoneNotUTCError, ceiling_to_day, floor_to_day
|
||||||
from zerver.lib.topic import DB_TOPIC_NAME
|
from zerver.lib.topic import DB_TOPIC_NAME
|
||||||
|
from zerver.lib.user_counts import realm_user_count_by_role
|
||||||
from zerver.lib.utils import assert_is_not_none
|
from zerver.lib.utils import assert_is_not_none
|
||||||
from zerver.models import (
|
from zerver.models import (
|
||||||
Client,
|
Client,
|
||||||
|
@ -118,7 +119,7 @@ class AnalyticsTestCase(ZulipTestCase):
|
||||||
RemoteRealm.objects.all().delete()
|
RemoteRealm.objects.all().delete()
|
||||||
|
|
||||||
# Lightweight creation of users, streams, and messages
|
# Lightweight creation of users, streams, and messages
|
||||||
def create_user(self, **kwargs: Any) -> UserProfile:
|
def create_user(self, skip_auditlog: bool = False, **kwargs: Any) -> UserProfile:
|
||||||
self.name_counter += 1
|
self.name_counter += 1
|
||||||
defaults = {
|
defaults = {
|
||||||
"email": f"user{self.name_counter}@domain.tld",
|
"email": f"user{self.name_counter}@domain.tld",
|
||||||
|
@ -136,7 +137,7 @@ class AnalyticsTestCase(ZulipTestCase):
|
||||||
if kwargs["is_bot"]:
|
if kwargs["is_bot"]:
|
||||||
pass_kwargs["bot_type"] = UserProfile.DEFAULT_BOT
|
pass_kwargs["bot_type"] = UserProfile.DEFAULT_BOT
|
||||||
pass_kwargs["bot_owner"] = None
|
pass_kwargs["bot_owner"] = None
|
||||||
return create_user(
|
user = create_user(
|
||||||
kwargs["email"],
|
kwargs["email"],
|
||||||
"password",
|
"password",
|
||||||
kwargs["realm"],
|
kwargs["realm"],
|
||||||
|
@ -145,6 +146,18 @@ class AnalyticsTestCase(ZulipTestCase):
|
||||||
role=UserProfile.ROLE_REALM_ADMINISTRATOR,
|
role=UserProfile.ROLE_REALM_ADMINISTRATOR,
|
||||||
**pass_kwargs,
|
**pass_kwargs,
|
||||||
)
|
)
|
||||||
|
if not skip_auditlog:
|
||||||
|
RealmAuditLog.objects.create(
|
||||||
|
realm=kwargs["realm"],
|
||||||
|
acting_user=None,
|
||||||
|
modified_user=user,
|
||||||
|
event_type=RealmAuditLog.USER_CREATED,
|
||||||
|
event_time=kwargs["date_joined"],
|
||||||
|
extra_data={
|
||||||
|
RealmAuditLog.ROLE_COUNT: realm_user_count_by_role(kwargs["realm"])
|
||||||
|
},
|
||||||
|
)
|
||||||
|
return user
|
||||||
|
|
||||||
def create_stream_with_recipient(self, **kwargs: Any) -> Tuple[Stream, Recipient]:
|
def create_stream_with_recipient(self, **kwargs: Any) -> Tuple[Stream, Recipient]:
|
||||||
self.name_counter += 1
|
self.name_counter += 1
|
||||||
|
@ -1882,7 +1895,7 @@ class TestActiveUsersAudit(AnalyticsTestCase):
|
||||||
@override
|
@override
|
||||||
def setUp(self) -> None:
|
def setUp(self) -> None:
|
||||||
super().setUp()
|
super().setUp()
|
||||||
self.user = self.create_user()
|
self.user = self.create_user(skip_auditlog=True)
|
||||||
self.stat = COUNT_STATS["active_users_audit:is_bot:day"]
|
self.stat = COUNT_STATS["active_users_audit:is_bot:day"]
|
||||||
self.current_property = self.stat.property
|
self.current_property = self.stat.property
|
||||||
|
|
||||||
|
@ -1955,11 +1968,11 @@ class TestActiveUsersAudit(AnalyticsTestCase):
|
||||||
# Also tests that aggregation to RealmCount and InstallationCount is
|
# Also tests that aggregation to RealmCount and InstallationCount is
|
||||||
# being done, and that we're storing the user correctly in UserCount
|
# being done, and that we're storing the user correctly in UserCount
|
||||||
def test_multiple_users_realms_and_bots(self) -> None:
|
def test_multiple_users_realms_and_bots(self) -> None:
|
||||||
user1 = self.create_user()
|
user1 = self.create_user(skip_auditlog=True)
|
||||||
user2 = self.create_user()
|
user2 = self.create_user(skip_auditlog=True)
|
||||||
second_realm = do_create_realm(string_id="moo", name="moo")
|
second_realm = do_create_realm(string_id="moo", name="moo")
|
||||||
user3 = self.create_user(realm=second_realm)
|
user3 = self.create_user(skip_auditlog=True, realm=second_realm)
|
||||||
user4 = self.create_user(realm=second_realm, is_bot=True)
|
user4 = self.create_user(skip_auditlog=True, realm=second_realm, is_bot=True)
|
||||||
for user in [user1, user2, user3, user4]:
|
for user in [user1, user2, user3, user4]:
|
||||||
self.add_event(RealmAuditLog.USER_CREATED, 1, user=user)
|
self.add_event(RealmAuditLog.USER_CREATED, 1, user=user)
|
||||||
do_fill_count_stat_at_hour(self.stat, self.TIME_ZERO)
|
do_fill_count_stat_at_hour(self.stat, self.TIME_ZERO)
|
||||||
|
@ -2001,7 +2014,7 @@ class TestActiveUsersAudit(AnalyticsTestCase):
|
||||||
# that situation doesn't throw an error.
|
# that situation doesn't throw an error.
|
||||||
def test_empty_realm_or_user_with_no_relevant_activity(self) -> None:
|
def test_empty_realm_or_user_with_no_relevant_activity(self) -> None:
|
||||||
self.add_event(RealmAuditLog.USER_SOFT_ACTIVATED, 1)
|
self.add_event(RealmAuditLog.USER_SOFT_ACTIVATED, 1)
|
||||||
self.create_user() # also test a user with no RealmAuditLog entries
|
self.create_user(skip_auditlog=True) # also test a user with no RealmAuditLog entries
|
||||||
do_create_realm(string_id="moo", name="moo")
|
do_create_realm(string_id="moo", name="moo")
|
||||||
do_fill_count_stat_at_hour(self.stat, self.TIME_ZERO)
|
do_fill_count_stat_at_hour(self.stat, self.TIME_ZERO)
|
||||||
self.assertTableState(UserCount, [], [])
|
self.assertTableState(UserCount, [], [])
|
||||||
|
@ -2020,9 +2033,9 @@ class TestActiveUsersAudit(AnalyticsTestCase):
|
||||||
self.assertTableState(UserCount, ["subgroup"], [["false"]])
|
self.assertTableState(UserCount, ["subgroup"], [["false"]])
|
||||||
|
|
||||||
def test_simultaneous_max_audit_entries_of_different_users(self) -> None:
|
def test_simultaneous_max_audit_entries_of_different_users(self) -> None:
|
||||||
user1 = self.create_user()
|
user1 = self.create_user(skip_auditlog=True)
|
||||||
user2 = self.create_user()
|
user2 = self.create_user(skip_auditlog=True)
|
||||||
user3 = self.create_user()
|
user3 = self.create_user(skip_auditlog=True)
|
||||||
self.add_event(RealmAuditLog.USER_CREATED, 0.5, user=user1)
|
self.add_event(RealmAuditLog.USER_CREATED, 0.5, user=user1)
|
||||||
self.add_event(RealmAuditLog.USER_CREATED, 0.5, user=user2)
|
self.add_event(RealmAuditLog.USER_CREATED, 0.5, user=user2)
|
||||||
self.add_event(RealmAuditLog.USER_CREATED, 1, user=user3)
|
self.add_event(RealmAuditLog.USER_CREATED, 1, user=user3)
|
||||||
|
|
Loading…
Reference in New Issue