From 7f18ab037436bcf389837228f3c6fda19602eb40 Mon Sep 17 00:00:00 2001 From: Bill Filler Date: Thu, 6 Dec 2018 15:22:11 -0500 Subject: [PATCH] Check config model before returning expiration date --- lms/djangoapps/mobile_api/users/serializers.py | 4 ++++ lms/djangoapps/mobile_api/users/tests.py | 9 +++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lms/djangoapps/mobile_api/users/serializers.py b/lms/djangoapps/mobile_api/users/serializers.py index 8bdca6d332..595d83c529 100644 --- a/lms/djangoapps/mobile_api/users/serializers.py +++ b/lms/djangoapps/mobile_api/users/serializers.py @@ -8,6 +8,7 @@ from rest_framework.reverse import reverse from lms.djangoapps.certificates.api import certificate_downloadable_status from courseware.access import has_access from openedx.features.course_duration_limits.access import get_user_course_expiration_date +from openedx.features.course_duration_limits.models import CourseDurationLimitConfig from student.models import CourseEnrollment, User from util.course import get_encoded_course_sharing_utm_params, get_link_for_about_page @@ -92,6 +93,9 @@ class CourseEnrollmentSerializer(serializers.ModelSerializer): """ Returns expiration date for a course audit expiration, if any or null """ + if not CourseDurationLimitConfig.enabled_for_enrollment(user=model.user, course_key=model.course.id): + return None + return get_user_course_expiration_date(model.user, model.course) def get_certificate(self, model): diff --git a/lms/djangoapps/mobile_api/users/tests.py b/lms/djangoapps/mobile_api/users/tests.py index 69882fa809..f3fe7a6b2c 100644 --- a/lms/djangoapps/mobile_api/users/tests.py +++ b/lms/djangoapps/mobile_api/users/tests.py @@ -277,7 +277,7 @@ class TestUserEnrollmentApi(UrlResetMixin, MobileAPITestCase, MobileAuthUserTest self.create_enrollment(expired) return self.api_response(api_version=api_version).data - def _assert_enrollment_results(self, api_version, courses, num_courses_returned): + def _assert_enrollment_results(self, api_version, courses, num_courses_returned, gating_enabled=True): self.assertEqual(len(courses), num_courses_returned) if api_version == API_V05: @@ -285,7 +285,8 @@ class TestUserEnrollmentApi(UrlResetMixin, MobileAPITestCase, MobileAuthUserTest self.assertNotIn('audit_access_expires', courses[0]) else: self.assertIn('audit_access_expires', courses[0]) - self.assertIsNotNone(courses[0].get('audit_access_expires')) + if gating_enabled: + self.assertIsNotNone(courses[0].get('audit_access_expires')) @ddt.data( (API_V05, True, 0), @@ -301,7 +302,7 @@ class TestUserEnrollmentApi(UrlResetMixin, MobileAPITestCase, MobileAuthUserTest ''' CourseDurationLimitConfig.objects.create(enabled=True, enabled_as_of=datetime.datetime(2018, 1, 1)) courses = self._get_enrollment_data(api_version, expired) - self._assert_enrollment_results(api_version, courses, num_courses_returned) + self._assert_enrollment_results(api_version, courses, num_courses_returned, True) @ddt.data( (API_V05, True, 1), @@ -317,7 +318,7 @@ class TestUserEnrollmentApi(UrlResetMixin, MobileAPITestCase, MobileAuthUserTest ''' CourseDurationLimitConfig.objects.create(enabled=False) courses = self._get_enrollment_data(api_version, expired) - self._assert_enrollment_results(api_version, courses, num_courses_returned) + self._assert_enrollment_results(api_version, courses, num_courses_returned, False) @attr(shard=9)