Skip to content

Commit 7873ed2

Browse files
renzonrenzon
authored andcommitted
Using logged user email as fallback to Discord integration
Fixed #4766
1 parent 6aa7008 commit 7873ed2

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

pythonpro/discord/tests/test_discord_integration.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,24 @@ def test_user_added_to_discord_server(client_with_user, logged_user, mocker):
2323
assert discord_user.discord_email == discord_user_api_response['email']
2424

2525

26+
def test_user_missing_email_added_to_discord_server(client_with_user, logged_user, mocker):
27+
mocker.patch(
28+
'pythonpro.discord.views.add_user_to_discord_server',
29+
return_value={'user': discord_user_missing_email_api_response}
30+
)
31+
subscription_type = baker.make(SubscriptionType, has_discord_access=True)
32+
baker.make(
33+
Subscription,
34+
status=Subscription.Status.ACTIVE,
35+
subscriber=logged_user,
36+
subscription_types=[subscription_type]
37+
)
38+
client_with_user.get(reverse('discord:autorize'), data={'code': 'xpto'})
39+
discord_user_id = discord_user_api_response['id']
40+
discord_user = DiscordUser.objects.get(discord_id=discord_user_id)
41+
assert discord_user.discord_email == logged_user.email
42+
43+
2644
def test_user_updated_to_discord_server(client_with_user, logged_user, mocker):
2745
mocker.patch(
2846
'pythonpro.discord.views.add_user_to_discord_server',
@@ -71,6 +89,22 @@ def test_user_without_subscription_access_not_added_to_discord_server(client_wit
7189
assert response.status_code == 403
7290

7391

92+
discord_user_missing_email_api_response = {
93+
'id': '800764510645256242',
94+
'username': 'renzopro',
95+
'avatar': '824db4a9821e21f2609e03e5815c23c0',
96+
'avatar_decoration': None,
97+
'discriminator': '3978',
98+
'public_flags': 0,
99+
'flags': 0,
100+
'banner': None,
101+
'banner_color': None,
102+
'accent_color': None,
103+
'locale': 'pt-BR',
104+
'mfa_enabled': True,
105+
'verified': True
106+
}
107+
74108
discord_user_api_response = {
75109
'id': '800764510645256242',
76110
'username': 'renzopro',

pythonpro/discord/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def autorize(request):
2424
discord_user_dict = member['user']
2525
defaults = {
2626
'discord_id': discord_user_dict['id'],
27-
'discord_email': discord_user_dict['email'],
27+
'discord_email': discord_user_dict.get('email', user.email),
2828
'user': user
2929
}
3030
DiscordUser.objects.update_or_create(user=user, defaults=defaults)

0 commit comments

Comments
 (0)