Skip to content

Commit 0ecdb9b

Browse files
renzonrenzon
authored andcommitted
Created hangling for Discord user with null email
closed #4771
1 parent 1fd0f91 commit 0ecdb9b

File tree

2 files changed

+25
-17
lines changed

2 files changed

+25
-17
lines changed

pythonpro/discord/tests/test_discord_integration.py

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,24 @@ def test_user_missing_email_added_to_discord_server(client_with_user, logged_use
4141
assert discord_user.discord_email == logged_user.email
4242

4343

44+
def test_user_email_null_added_to_discord_server(client_with_user, logged_user, mocker):
45+
mocker.patch(
46+
'pythonpro.discord.views.add_user_to_discord_server',
47+
return_value={'user': discord_user_email_is_null_api_response}
48+
)
49+
subscription_type = baker.make(SubscriptionType, has_discord_access=True)
50+
baker.make(
51+
Subscription,
52+
status=Subscription.Status.ACTIVE,
53+
subscriber=logged_user,
54+
subscription_types=[subscription_type]
55+
)
56+
client_with_user.get(reverse('discord:autorize'), data={'code': 'xpto'})
57+
discord_user_id = discord_user_api_response['id']
58+
discord_user = DiscordUser.objects.get(discord_id=discord_user_id)
59+
assert discord_user.discord_email == logged_user.email
60+
61+
4462
def test_user_updated_to_discord_server(client_with_user, logged_user, mocker):
4563
mocker.patch(
4664
'pythonpro.discord.views.add_user_to_discord_server',
@@ -105,19 +123,8 @@ def test_user_without_subscription_access_not_added_to_discord_server(client_wit
105123
'verified': True
106124
}
107125

108-
discord_user_api_response = {
109-
'id': '800764510645256242',
110-
'username': 'renzopro',
111-
'avatar': '824db4a9821e21f2609e03e5815c23c0',
112-
'avatar_decoration': None,
113-
'discriminator': '3978',
114-
'public_flags': 0,
115-
'flags': 0,
116-
'banner': None,
117-
'banner_color': None,
118-
'accent_color': None,
119-
'locale': 'pt-BR',
120-
'mfa_enabled': True,
121-
'email': 'renzo@dev.pro.br',
122-
'verified': True
123-
}
126+
discord_user_api_response = dict(discord_user_missing_email_api_response)
127+
discord_user_api_response['email'] = 'renzo@dev.pro.br'
128+
129+
discord_user_email_is_null_api_response = dict(discord_user_missing_email_api_response)
130+
discord_user_email_is_null_api_response['email'] = None

pythonpro/discord/views.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,10 @@ def autorize(request):
2222
autorize_uri = request.build_absolute_uri(reverse('discord:autorize'))
2323
member = add_user_to_discord_server(autorize_uri, code)
2424
discord_user_dict = member['user']
25+
email = discord_user_dict.get('email', user.email) or user.email
2526
defaults = {
2627
'discord_id': discord_user_dict['id'],
27-
'discord_email': discord_user_dict.get('email', user.email),
28+
'discord_email': email,
2829
'user': user
2930
}
3031
DiscordUser.objects.update_or_create(user=user, defaults=defaults)

0 commit comments

Comments
 (0)