Merge pull request #31584 from openedx/hamza442/DENG-1261-add-testcases

chore: add new tests for retire_user management command
This commit is contained in:
Hamza442
2023-01-18 23:58:59 +05:00
committed by GitHub
2 changed files with 45 additions and 6 deletions

View File

@@ -60,7 +60,9 @@ class Command(BaseCommand):
"""
unknown_users = []
users = []
if userfile:
user = user_name
email = useremail
if userfile and (not user and not email):
try:
userinfo = open(userfile, 'r')
except Exception as exc:
@@ -76,13 +78,19 @@ class Command(BaseCommand):
users.append(User.objects.get(username=username, email=user_email))
except user_model.DoesNotExist:
unknown_users.append({username: user_email})
elif user_name and useremail:
elif (user and email) and not userfile:
try:
users.append(User.objects.get(username=username, email=user_email))
users.append(User.objects.get(username=user, email=email))
except user_model.DoesNotExist:
unknown_users.append({username: useremail})
unknown_users.append({user: email})
elif userfile and user and email:
error_message = (
'You cannot use userfile option with username and user_email option. '
'Use only userfile option or use just username and user_email option'
)
raise CommandError(error_message)
else:
raise CommandError("Please provide user_file or username and user_email parameter when runing command")
raise CommandError("Please provide user_file or username and user_email parameter when running command")
return users, unknown_users
def handle(self, *args, **options):

View File

@@ -59,7 +59,7 @@ def remove_user_file():
@skip_unless_lms
def test_successful_retire(setup_retirement_states): # lint-amnesty, pylint: disable=redefined-outer-name, unused-argument
def test_successful_retire_with_userfile(setup_retirement_states): # lint-amnesty, pylint: disable=redefined-outer-name, unused-argument
user = UserFactory.create(username='user0', email="user0@example.com")
username = user.username
user_email = user.email
@@ -80,3 +80,34 @@ def test_retire_user_with_usename_email_mismatch(setup_retirement_states): # li
with pytest.raises(CommandError, match=r'Could not find users with specified username and email '):
call_command('retire_user', user_file=user_file)
remove_user_file()
@skip_unless_lms
def test_retire_user_without_usename_email_userfile(setup_retirement_states): # lint-amnesty, pylint: disable=redefined-outer-name, unused-argument
with pytest.raises(CommandError, match=r'Please provide user_file or username and user_email '):
call_command('retire_user')
@skip_unless_lms
def test_successful_retire_with_username_email(setup_retirement_states): # lint-amnesty, pylint: disable=redefined-outer-name, unused-argument
user = UserFactory.create(username='user0', email="user0@example.com")
username = user.username
user_email = user.email
call_command('retire_user', username=username, user_email=user_email)
user = User.objects.get(username=username)
retired_user_status = UserRetirementStatus.objects.all()[0]
assert retired_user_status.original_username == username
assert retired_user_status.original_email == user_email
# Make sure that we have changed the email address linked to the original user
assert user.email != user_email
@skip_unless_lms
def test_retire_with_username_email_userfile(setup_retirement_states): # lint-amnesty, pylint: disable=redefined-outer-name, unused-argument
user = UserFactory.create(username='user0', email="user0@example.com")
username = user.username
user_email = user.email
create_user_file(True)
with pytest.raises(CommandError, match=r'You cannot use userfile option with username and user_email'):
call_command('retire_user', user_file=user_file, username=username, user_email=user_email)
remove_user_file()