Skip to content
This repository was archived by the owner on Jun 13, 2025. It is now read-only.

Commit 74c2abd

Browse files
committed
Publish User Created and User Logged in events
1 parent 6ac7173 commit 74c2abd

File tree

2 files changed

+56
-1
lines changed

2 files changed

+56
-1
lines changed

codecov_auth/tests/unit/views/test_base.py

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from datetime import datetime, timedelta, timezone
2-
from unittest.mock import Mock, patch
2+
from unittest.mock import Mock, call, patch
33

44
import pytest
55
from django.conf import settings
@@ -174,6 +174,25 @@ def test_get_or_create_calls_analytics_user_signed_up_when_owner_created(
174174
)
175175
user_signed_up_mock.assert_called_once()
176176

177+
@patch("shared.events.amplitude.AmplitudeEventPublisher.publish")
178+
def test_get_or_create_calls_amplitude_user_created_when_owner_created(
179+
self, amplitude_publish_mock
180+
):
181+
self.mixin_instance._get_or_create_owner(
182+
{
183+
"user": {"id": 12345, "key": "4567", "login": "testuser"},
184+
"has_private_access": False,
185+
},
186+
self.request,
187+
)
188+
189+
amplitude_publish_mock.assert_has_calls(
190+
[
191+
call("User Created", {"user_ownerid": 15}),
192+
call("set_orgs", {"user_ownerid": 15, "org_ids": []}),
193+
]
194+
)
195+
177196
@patch("services.analytics.AnalyticsService.user_signed_in")
178197
def test_get_or_create_calls_analytics_user_signed_in_when_owner_not_created(
179198
self, user_signed_in_mock
@@ -192,6 +211,30 @@ def test_get_or_create_calls_analytics_user_signed_in_when_owner_not_created(
192211
)
193212
user_signed_in_mock.assert_called_once()
194213

214+
@patch("shared.events.amplitude.AmplitudeEventPublisher.publish")
215+
def test_get_or_create_calls_amplitude_user_logged_in_when_owner_not_created(
216+
self, amplitude_publish_mock
217+
):
218+
owner = OwnerFactory(service_id=89, service="github", organizations=[1, 2])
219+
self.mixin_instance._get_or_create_owner(
220+
{
221+
"user": {
222+
"id": owner.service_id,
223+
"key": "02or0sa",
224+
"login": owner.username,
225+
},
226+
"has_private_access": owner.private_access,
227+
},
228+
self.request,
229+
)
230+
231+
amplitude_publish_mock.assert_has_calls(
232+
[
233+
call("User Logged in", {"user_ownerid": 16}),
234+
call("set_orgs", {"user_ownerid": 16, "org_ids": [1, 2]}),
235+
]
236+
)
237+
195238
@override_settings(IS_ENTERPRISE=False)
196239
@patch("services.analytics.AnalyticsService.user_signed_in")
197240
def test_set_marketing_tags_on_cookies(self, user_signed_in_mock):

codecov_auth/views/base.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from django.utils import timezone
1616
from django.utils.timezone import now
1717
from shared.encryption.token import encode_token
18+
from shared.events.amplitude import AmplitudeEventPublisher
1819
from shared.license import LICENSE_ERRORS_MESSAGES, get_current_license
1920

2021
from codecov_auth.models import Owner, OwnerProfile, Session, User
@@ -393,10 +394,21 @@ def _get_or_create_owner(
393394
owner.save(update_fields=fields_to_update)
394395

395396
marketing_tags = self.retrieve_marketing_tags_from_cookie()
397+
amplitude = AmplitudeEventPublisher()
396398
if was_created:
397399
self.analytics_service.user_signed_up(owner, **marketing_tags)
400+
amplitude.publish("User Created", {"user_ownerid": owner.ownerid})
398401
else:
399402
self.analytics_service.user_signed_in(owner, **marketing_tags)
403+
amplitude.publish("User Logged in", {"user_ownerid": owner.ownerid})
404+
orgs = owner.organizations
405+
amplitude.publish(
406+
"set_orgs",
407+
{
408+
"user_ownerid": owner.ownerid,
409+
"org_ids": orgs if orgs is not None else [],
410+
},
411+
)
400412

401413
return (owner, was_created)
402414

0 commit comments

Comments
 (0)