Commit cafea307 by Will Daly

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
parents 3775efae 05cb2a07
......@@ -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)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment