diff --git a/common/djangoapps/student/models.py b/common/djangoapps/student/models.py index c65c7b3243..6f62e9e13b 100644 --- a/common/djangoapps/student/models.py +++ b/common/djangoapps/student/models.py @@ -1046,9 +1046,10 @@ class CourseEnrollment(models.Model): `course_key` is our usual course_id string (e.g. "edX/Test101/2013_Fall) `mode` is a string specifying what kind of enrollment this is. The - default is "honor", meaning honor certificate. Future options - may include "audit", "verified_id", etc. Please don't use it - until we have these mapped out. + default is 'honor', meaning honor certificate. Other options + include 'professional', 'verified', 'audit', + 'no-id-professional' and 'credit'. + See CourseMode in common/djangoapps/course_modes/models.py. `check_access`: if True, we check that an accessible course actually exists for the given course_key before we enroll the student. diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py index 624a945f96..07b7c5f37a 100644 --- a/common/djangoapps/student/views.py +++ b/common/djangoapps/student/views.py @@ -1769,6 +1769,10 @@ def auto_auth(request): full_name = request.GET.get('full_name', username) is_staff = request.GET.get('staff', None) course_id = request.GET.get('course_id', None) + + # mode has to be one of 'honor'/'professional'/'verified'/'audit'/'no-id-professional'/'credit' + enrollment_mode = request.GET.get('enrollment_mode', 'honor') + course_key = None if course_id: course_key = CourseLocator.from_string(course_id) @@ -1816,7 +1820,7 @@ def auto_auth(request): # Enroll the user in a course if course_key is not None: - CourseEnrollment.enroll(user, course_key) + CourseEnrollment.enroll(user, course_key, mode=enrollment_mode) # Apply the roles for role_name in role_names: diff --git a/common/test/acceptance/pages/lms/auto_auth.py b/common/test/acceptance/pages/lms/auto_auth.py index d9113719e1..1e4d0681ba 100644 --- a/common/test/acceptance/pages/lms/auto_auth.py +++ b/common/test/acceptance/pages/lms/auto_auth.py @@ -17,7 +17,8 @@ class AutoAuthPage(PageObject): CONTENT_REGEX = r'.+? user (?P\S+) \((?P.+?)\) with password \S+ and user_id (?P\d+)$' - def __init__(self, browser, username=None, email=None, password=None, staff=None, course_id=None, roles=None): + def __init__(self, browser, username=None, email=None, password=None, staff=None, course_id=None, + enrollment_mode=None, roles=None): """ Auto-auth is an end-point for HTTP GET requests. By default, it will create accounts with random user credentials, @@ -52,6 +53,8 @@ class AutoAuthPage(PageObject): if course_id is not None: self._params['course_id'] = course_id + if enrollment_mode: + self._params['enrollment_mode'] = enrollment_mode if roles is not None: self._params['roles'] = roles diff --git a/common/test/acceptance/tests/lms/test_lms_instructor_dashboard.py b/common/test/acceptance/tests/lms/test_lms_instructor_dashboard.py index 5769934b94..6915554052 100644 --- a/common/test/acceptance/tests/lms/test_lms_instructor_dashboard.py +++ b/common/test/acceptance/tests/lms/test_lms_instructor_dashboard.py @@ -168,32 +168,12 @@ class ProctoredExamsTest(BaseInstructorDashboardTest): # Auto-auth register for the course. self._auto_auth(self.USERNAME, self.EMAIL, False) - def _auto_auth(self, username, email, staff): + def _auto_auth(self, username, email, staff, enrollment_mode="honor"): """ Logout and login with given credentials. """ AutoAuthPage(self.browser, username=username, email=email, - course_id=self.course_id, staff=staff).visit() - - def _login_as_a_verified_user(self): - """ - login as a verififed user - """ - - self._auto_auth(self.USERNAME, self.EMAIL, False) - - # the track selection page cannot be visited. see the other tests to see if any prereq is there. - # Navigate to the track selection page - self.track_selection_page.visit() - - # Enter the payment and verification flow by choosing to enroll as verified - self.track_selection_page.enroll('verified') - - # Proceed to the fake payment page - self.payment_and_verification_flow.proceed_to_payment() - - # Submit payment - self.fake_payment_page.submit_payment() + course_id=self.course_id, staff=staff, enrollment_mode=enrollment_mode).visit() def _create_a_proctored_exam_and_attempt(self): """ @@ -212,7 +192,7 @@ class ProctoredExamsTest(BaseInstructorDashboardTest): # login as a verified student and visit the courseware. LogoutPage(self.browser).visit() - self._login_as_a_verified_user() + self._auto_auth(self.USERNAME, self.EMAIL, False, enrollment_mode="verified") self.courseware_page.visit() # Start the proctored exam. @@ -235,7 +215,7 @@ class ProctoredExamsTest(BaseInstructorDashboardTest): # login as a verified student and visit the courseware. LogoutPage(self.browser).visit() - self._login_as_a_verified_user() + self._auto_auth(self.USERNAME, self.EMAIL, False, enrollment_mode="verified") self.courseware_page.visit() # Start the proctored exam.