Skip to content

Commit

Permalink
refactor: few code refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
mudassir-hafeez committed Aug 19, 2024
1 parent 47bada0 commit 5769c1b
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 35 deletions.
28 changes: 11 additions & 17 deletions courseware/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -535,21 +535,15 @@ def get_edx_api_service_client():
)


def get_edx_api_registration_client():
def get_edx_api_registration_validation_client():
"""
Gets an edx api client instance for the user registration
Gets an Open edX api client instance for the user registration
Returns:
EdxApi: edx api registration client instance
EdxApi: Open edX api registration client instance
"""
registration_access_token = (
settings.MITXPRO_REGISTRATION_ACCESS_TOKEN
if settings.MITXPRO_REGISTRATION_ACCESS_TOKEN
else ""
)

return EdxApi(
{"access_token": registration_access_token},
{"access_token": ""},
settings.OPENEDX_API_BASE_URL,
timeout=settings.EDX_API_CLIENT_TIMEOUT,
)
Expand Down Expand Up @@ -841,20 +835,20 @@ def delete_oauth_application():

def validate_name_with_edx(name):
"""
Returns validation message after validating it with edX.
Returns validation message after validating it with Open edX.
Args:
name (str): The full name
Raises:
EdxApiRegistrationValidationException: Raised if response status is not 200.
"""
edx_client = get_edx_api_registration_client()
edx_client = get_edx_api_registration_validation_client()
try:
return edx_client.user_validation.validate_user_registration(
registration_information=dict( # noqa: C408
name=name,
)
).name
response = edx_client.user_validation.validate_user_registration_info(
registration_information={"name": name},
)
except Exception as exc:
raise EdxApiRegistrationValidationException(name, exc.response) from exc
else:
return response.name
13 changes: 7 additions & 6 deletions courseware/api_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,21 +115,21 @@ def update_token_response_error(settings):
def test_validate_name_with_edx_success(mock_validate_user_registration):
"""
Test that validate_name_with_edx successfully returns the validation message
from edX API when the name is valid.
from Open edX API when the name is valid.
"""
name = "Test User"

result = validate_name_with_edx(name)
assert result == ""
mock_validate_user_registration.user_validation.validate_user_registration.assert_called_once_with(
mock_validate_user_registration.user_validation.validate_user_registration_info.assert_called_once_with(
registration_information={"name": name}
)


def test_validate_name_with_edx_failure(mocker):
"""
Test that validate_name_with_edx raises EdxApiRegistrationValidationException
when the edX API call fails.
when the Open edX API call fails.
"""
name = "Test User"

Expand All @@ -146,16 +146,17 @@ def __init__(self, message, response):
mock_response.text = "Some error details"

mock_client = mocker.MagicMock()
mock_client.user_validation.validate_user_registration.side_effect = (
mock_client.user_validation.validate_user_registration_info.side_effect = (
MockApiException("API error", response=mock_response)
)
mocker.patch(
"courseware.api.get_edx_api_registration_client", return_value=mock_client
"courseware.api.get_edx_api_registration_validation_client",
return_value=mock_client,
)

with pytest.raises(EdxApiRegistrationValidationException) as exc_info:
validate_name_with_edx(name)
mock_client.user_validation.validate_user_registration.assert_called_once_with(
mock_client.user_validation.validate_user_registration_info.assert_called_once_with(
registration_information={"name": name}
)
assert (
Expand Down
4 changes: 2 additions & 2 deletions courseware/exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,15 +66,15 @@ class UserNameUpdateFailedException(Exception): # noqa: N818


class EdxApiRegistrationValidationException(Exception): # noqa: N818
"""An edX Registration Validation API call resulted in an error response"""
"""An Open edX Registration Validation API call resulted in an error response"""

def __init__(self, name, error_response, msg=None):
"""
Sets exception properties and adds a default message
Args:
name (str): The name being validated
response (requests.Response): edX response for name validation
response (requests.Response): Open edX response for name validation
"""
self.name = name
self.response = error_response
Expand Down
9 changes: 6 additions & 3 deletions fixtures/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,14 +114,17 @@ def nplusone_fail(settings): # noqa: PT004

@pytest.fixture
def mock_validate_user_registration(mocker):
"""Fixture to mock validate_user_registration method."""
"""Fixture to mock validate_user_registration_info method."""
mock_response = mocker.MagicMock()
mock_response.name = ""

mock_client = mocker.MagicMock()
mock_client.user_validation.validate_user_registration.return_value = mock_response
mock_client.user_validation.validate_user_registration_info.return_value = (
mock_response
)
mocker.patch(
"courseware.api.get_edx_api_registration_client", return_value=mock_client
"courseware.api.get_edx_api_registration_validation_client",
return_value=mock_client,
)

return mock_client
8 changes: 1 addition & 7 deletions users/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@

import pycountry
from django.db import transaction
from requests import HTTPError
from requests.exceptions import ConnectionError as RequestsConnectionError
from rest_framework import serializers
from social_django.models import UserSocialAuth

Expand Down Expand Up @@ -278,11 +276,7 @@ def validate(self, data):
if name:
try:
openedx_validation_msg = validate_name_with_edx(name)
except (
HTTPError,
RequestsConnectionError,
EdxApiRegistrationValidationException,
) as exc:
except EdxApiRegistrationValidationException as exc:
log.exception("Unable to create user account: %s", exc) # noqa: TRY401
raise serializers.ValidationError(USER_REGISTRATION_FAILED_MSG) # noqa: B904

Expand Down

0 comments on commit 5769c1b

Please sign in to comment.