Skip to content

Commit

Permalink
fix: support numeric usernames on get_user method
Browse files Browse the repository at this point in the history
  • Loading branch information
andrey-canon committed Nov 21, 2023
1 parent 65ddeae commit e706107
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 10 deletions.
17 changes: 8 additions & 9 deletions event_routing_backends/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,17 +93,16 @@ def get_user(username_or_id):
Returns:
user object
"""
user = user_id = username = None
if username_or_id:
try:
user_id = int(username_or_id)
except ValueError:
username = username_or_id
user = username = None

if not username_or_id:
return None

if username:
try:
user = User.objects.get(id=int(username_or_id))
except (User.DoesNotExist, ValueError):
username = username_or_id
user = User.objects.filter(username=username).first()
elif user_id:
user = User.objects.filter(id=user_id).first()

if username and not user:
try:
Expand Down
28 changes: 27 additions & 1 deletion event_routing_backends/tests/test_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,30 @@
"""
from unittest.mock import patch

from ddt import data, ddt
from django.test import TestCase

from event_routing_backends.helpers import (
get_anonymous_user_id,
get_block_id_from_event_referrer,
get_course_from_id,
get_user,
get_user_email,
get_uuid5,
)
from event_routing_backends.tests.factories import UserFactory


@ddt
class TestHelpers(TestCase):
"""
Test the helper methods.
"""

def setUp(self):
super().setUp()
UserFactory.create(username='edx', email='[email protected]')
self.edx_user = UserFactory.create(username='edx', email='[email protected]')
UserFactory.create(username='10228945687', email='[email protected]')

def test_get_block_id_from_event_referrer_with_error(self):
sample_event = {
Expand Down Expand Up @@ -83,3 +88,24 @@ def test_get_course_from_id_unknown_course(self, mock_get_course_overviews):
mock_get_course_overviews.return_value = []
with self.assertRaises(ValueError):
get_course_from_id("foo")

@data("edx", "10228945687")
def test_get_user_by_username(self, username):
"""Test that the method get_user returns the right user based on given username parameter.
Expected behavior:
- Returned user corresponds to the username.
"""
user = get_user(username)

self.assertEqual(username, user.username)

def test_get_user_by_id(self):
""" Test that the method get_user returns the right user based on the user id.
Expected behavior:
- Returned user is the edx_user
"""
user = get_user(self.edx_user.id)

self.assertEqual(self.edx_user, user)

0 comments on commit e706107

Please sign in to comment.