Merge pull request #5722 from edx/renzo/third-party-auth-no-prof-ed-autoenroll
Prohibit automatic enrollment in prof ed courses when user authenticates via third-party auth
This commit is contained in:
@@ -116,6 +116,26 @@ class EnrollmentTest(ModuleStoreTestCase):
|
||||
change_enrollment_third_party(is_register=True, strategy=strategy, user=self.user)
|
||||
self.assertTrue(CourseEnrollment.is_enrolled(self.user, self.course.id))
|
||||
|
||||
def test_no_prof_ed_third_party_autoenroll(self):
|
||||
"""
|
||||
Test that a user authenticating via third party auth while attempting to enroll
|
||||
in a professional education course is not automatically enrolled in the course.
|
||||
"""
|
||||
self.client.logout()
|
||||
|
||||
# Create the course mode required for this test case
|
||||
CourseModeFactory(course_id=self.course.id, mode_slug='professional')
|
||||
|
||||
self.client.get(reverse('register_user'), {'course_id': self.course.id})
|
||||
self.client.login(username=self.USERNAME, password=self.PASSWORD)
|
||||
self.dummy_request = RequestFactory().request()
|
||||
self.dummy_request.session = self.client.session
|
||||
strategy = DjangoStrategy(RequestFactory, request=self.dummy_request)
|
||||
change_enrollment_third_party(is_register=True, strategy=strategy, user=self.user)
|
||||
|
||||
# Verify that the user has not been enrolled in the course
|
||||
self.assertFalse(CourseEnrollment.is_enrolled(self.user, self.course.id))
|
||||
|
||||
def test_unenroll(self):
|
||||
# Enroll the student in the course
|
||||
CourseEnrollment.enroll(self.user, self.course.id, mode="honor")
|
||||
|
||||
@@ -69,8 +69,8 @@ from social.apps.django_app.default import models
|
||||
from social.exceptions import AuthException
|
||||
from social.pipeline import partial
|
||||
|
||||
from student.models import CourseEnrollment, CourseEnrollmentException
|
||||
from opaque_keys.edx.locations import SlashSeparatedCourseKey
|
||||
from student.models import CourseMode, CourseEnrollment, CourseEnrollmentException
|
||||
from opaque_keys.edx.keys import CourseKey
|
||||
|
||||
from logging import getLogger
|
||||
|
||||
@@ -420,14 +420,15 @@ def change_enrollment(*args, **kwargs):
|
||||
a course, we automatically log them into that course.
|
||||
"""
|
||||
if kwargs['strategy'].session_get('registration_course_id'):
|
||||
try:
|
||||
CourseEnrollment.enroll(
|
||||
kwargs['user'],
|
||||
SlashSeparatedCourseKey.from_deprecated_string(
|
||||
kwargs['strategy'].session_get('registration_course_id')
|
||||
)
|
||||
)
|
||||
except CourseEnrollmentException:
|
||||
pass
|
||||
except Exception, e:
|
||||
logger.exception(e)
|
||||
course_id = CourseKey.from_string(
|
||||
kwargs['strategy'].session_get('registration_course_id')
|
||||
)
|
||||
available_modes = CourseMode.modes_for_course_dict(course_id)
|
||||
|
||||
if 'honor' in available_modes:
|
||||
try:
|
||||
CourseEnrollment.enroll(kwargs['user'], course_id)
|
||||
except CourseEnrollmentException:
|
||||
pass
|
||||
except Exception, e:
|
||||
logger.exception(e)
|
||||
|
||||
Reference in New Issue
Block a user