diff --git a/openedx/core/djangoapps/enrollments/tests/test_views.py b/openedx/core/djangoapps/enrollments/tests/test_views.py index 41c5a9624c24..20abed4c8679 100644 --- a/openedx/core/djangoapps/enrollments/tests/test_views.py +++ b/openedx/core/djangoapps/enrollments/tests/test_views.py @@ -8,11 +8,10 @@ import json from unittest.mock import patch from urllib.parse import quote +from zoneinfo import ZoneInfo import ddt -import httpretty import pytest -from zoneinfo import ZoneInfo from django.conf import settings from django.core.cache import cache from django.core.exceptions import ImproperlyConfigured @@ -44,8 +43,6 @@ from openedx.core.djangoapps.user_api.models import RetirementState, UserOrgTag, UserRetirementStatus from openedx.core.djangolib.testing.utils import skip_unless_lms from openedx.core.lib.django_test_client_utils import get_absolute_url -from openedx.features.enterprise_support.tests import FAKE_ENTERPRISE_CUSTOMER -from openedx.features.enterprise_support.tests.mixins.enterprise import EnterpriseServiceMockMixin from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase from xmodule.modulestore.tests.factories import CourseFactory, check_mongo_calls_range @@ -158,7 +155,7 @@ def _get_enrollments(self): @override_waffle_flag(ENABLE_NOTIFICATIONS, True) @ddt.ddt @skip_unless_lms -class EnrollmentTest(EnrollmentTestMixin, ModuleStoreTestCase, APITestCase, EnterpriseServiceMockMixin): +class EnrollmentTest(EnrollmentTestMixin, ModuleStoreTestCase, APITestCase): """ Test user enrollment, especially with different course modes. """ @@ -1238,40 +1235,6 @@ def test_enrollment_with_global_staff_permissions(self, using_global_staff_user, assert course_mode == CourseMode.VERIFIED self.client.logout() - @httpretty.activate - @override_settings(ENTERPRISE_SERVICE_WORKER_USERNAME='enterprise_worker', - FEATURES=dict(ENABLE_ENTERPRISE_INTEGRATION=True)) - @patch('openedx.features.enterprise_support.api.enterprise_customer_from_api') - def test_enterprise_course_enrollment_with_ec_uuid(self, mock_enterprise_customer_from_api): - """Verify that the enrollment completes when the EnterpriseCourseEnrollment creation succeeds. """ - UserFactory.create( - username='enterprise_worker', - email=self.EMAIL, - password=self.PASSWORD, - ) - CourseModeFactory.create( - course_id=self.course.id, - mode_slug=CourseMode.DEFAULT_MODE_SLUG, - mode_display_name=CourseMode.DEFAULT_MODE_SLUG, - ) - consent_kwargs = { - 'username': self.user.username, - 'course_id': str(self.course.id), - 'ec_uuid': 'this-is-a-real-uuid' - } - mock_enterprise_customer_from_api.return_value = FAKE_ENTERPRISE_CUSTOMER - self.mock_enterprise_course_enrollment_post_api() - self.mock_consent_missing(**consent_kwargs) - self.mock_consent_post(**consent_kwargs) - self.assert_enrollment_status( - expected_status=status.HTTP_200_OK, - as_server=True, - username='enterprise_worker', - linked_enterprise_customer='this-is-a-real-uuid', - ) - assert httpretty.last_request().path == '/consent/api/v1/data_sharing_consent' # pylint: disable=no-member - assert httpretty.last_request().method == httpretty.POST - def test_enrollment_attributes_always_written(self): """ Enrollment attributes should always be written, regardless of whether the enrollment is being created or updated. diff --git a/openedx/core/djangoapps/enrollments/views.py b/openedx/core/djangoapps/enrollments/views.py index dc3423245e9b..cd22b649d52d 100644 --- a/openedx/core/djangoapps/enrollments/views.py +++ b/openedx/core/djangoapps/enrollments/views.py @@ -8,17 +8,17 @@ from django.core.exceptions import ( # lint-amnesty, pylint: disable=wrong-import-order ObjectDoesNotExist, - ValidationError, + ValidationError ) from django.db import IntegrityError # lint-amnesty, pylint: disable=wrong-import-order from django.db.models import Q # lint-amnesty, pylint: disable=wrong-import-order from django.utils.decorators import method_decorator # lint-amnesty, pylint: disable=wrong-import-order -from edx_rest_framework_extensions.auth.jwt.authentication import ( - JwtAuthentication, -) # lint-amnesty, pylint: disable=wrong-import-order -from edx_rest_framework_extensions.auth.session.authentication import ( - SessionAuthenticationAllowInactiveUser, -) # lint-amnesty, pylint: disable=wrong-import-order +from edx_rest_framework_extensions.auth.jwt.authentication import ( # lint-amnesty, pylint: disable=wrong-import-order + JwtAuthentication +) +from edx_rest_framework_extensions.auth.session.authentication import ( # lint-amnesty, pylint: disable=wrong-import-order + SessionAuthenticationAllowInactiveUser +) from opaque_keys import InvalidKeyError # lint-amnesty, pylint: disable=wrong-import-order from opaque_keys.edx.keys import CourseKey # lint-amnesty, pylint: disable=wrong-import-order from rest_framework import permissions, status # lint-amnesty, pylint: disable=wrong-import-order @@ -41,13 +41,13 @@ CourseEnrollmentError, CourseEnrollmentExistsError, CourseModeNotFoundError, - InvalidEnrollmentAttribute, + InvalidEnrollmentAttribute ) from openedx.core.djangoapps.enrollments.forms import CourseEnrollmentsApiListForm from openedx.core.djangoapps.enrollments.paginators import CourseEnrollmentsApiListPagination from openedx.core.djangoapps.enrollments.serializers import ( CourseEnrollmentAllowedSerializer, - CourseEnrollmentsApiListSerializer, + CourseEnrollmentsApiListSerializer ) from openedx.core.djangoapps.user_api.accounts.permissions import CanRetireUser from openedx.core.djangoapps.user_api.models import UserRetirementStatus @@ -57,12 +57,6 @@ from openedx.core.lib.api.view_utils import DeveloperErrorViewMixin from openedx.core.lib.exceptions import CourseNotFoundError from openedx.core.lib.log_utils import audit_log -from openedx.features.enterprise_support.api import ( - ConsentApiServiceClient, - EnterpriseApiException, - EnterpriseApiServiceClient, - enterprise_enabled, -) log = logging.getLogger(__name__) REQUIRED_ATTRIBUTES = { @@ -774,27 +768,6 @@ def post(self, request): data={"message": ("'{value}' is an invalid enrollment activation status.").format(value=is_active)}, ) - explicit_linked_enterprise = request.data.get("linked_enterprise_customer") - if explicit_linked_enterprise and has_api_key_permissions and enterprise_enabled(): - enterprise_api_client = EnterpriseApiServiceClient() - consent_client = ConsentApiServiceClient() - try: - enterprise_api_client.post_enterprise_course_enrollment(username, str(course_id)) - except EnterpriseApiException as error: - log.exception( - "An unexpected error occurred while creating the new EnterpriseCourseEnrollment " - "for user [%s] in course run [%s]", - username, - course_id, - ) - raise CourseEnrollmentError(str(error)) # lint-amnesty, pylint: disable=raise-missing-from - kwargs = { - "username": username, - "course_id": str(course_id), - "enterprise_customer_uuid": explicit_linked_enterprise, - } - consent_client.provide_consent(**kwargs) - enrollment_attributes = request.data.get("enrollment_attributes") force_enrollment = request.data.get("force_enrollment") # Check if the force enrollment status is None or a Boolean