diff --git a/lms/djangoapps/courseware/tests/test_lti_integration.py b/lms/djangoapps/courseware/tests/test_lti_integration.py index d22050d..943d06f 100644 --- a/lms/djangoapps/courseware/tests/test_lti_integration.py +++ b/lms/djangoapps/courseware/tests/test_lti_integration.py @@ -188,7 +188,7 @@ class TestLTIModuleListing(ModuleStoreTestCase): """tests that the draft lti module is part of the endpoint response""" request = mock.Mock() request.method = 'GET' - response = get_course_lti_endpoints(request, self.course.id.to_deprecated_string()) + response = get_course_lti_endpoints(request, course_id=self.course.id.to_deprecated_string()) self.assertEqual(200, response.status_code) self.assertEqual('application/json', response['Content-Type']) diff --git a/lms/djangoapps/courseware/tests/test_views.py b/lms/djangoapps/courseware/tests/test_views.py index d373f9e..e00eb5d 100644 --- a/lms/djangoapps/courseware/tests/test_views.py +++ b/lms/djangoapps/courseware/tests/test_views.py @@ -463,7 +463,7 @@ class TestProgressDueDate(BaseDueDateTests): """ Returns the HTML for the progress page """ mako_middleware_process_request(self.request) - return views.progress(self.request, course.id.to_deprecated_string(), self.user.id).content + return views.progress(self.request, course_id=course.id.to_deprecated_string(), student_id=self.user.id).content class TestAccordionDueDate(BaseDueDateTests): @@ -560,11 +560,11 @@ class ProgressPageTests(ModuleStoreTestCase): def test_pure_ungraded_xblock(self): ItemFactory(category='acid', parent_location=self.vertical.location) - resp = views.progress(self.request, self.course.id.to_deprecated_string()) + resp = views.progress(self.request, course_id=self.course.id.to_deprecated_string()) self.assertEqual(resp.status_code, 200) def test_non_asci_grade_cutoffs(self): - resp = views.progress(self.request, self.course.id.to_deprecated_string()) + resp = views.progress(self.request, course_id=self.course.id.to_deprecated_string()) self.assertEqual(resp.status_code, 200) @@ -581,11 +581,11 @@ class TestVerifyCourseIdDecorator(TestCase): def test_decorator_with_valid_course_id(self): mocked_view = create_autospec(views.course_about) view_function = views.verify_course_id(mocked_view) - view_function(self.request, self.valid_course_id) + view_function(self.request, course_id=self.valid_course_id) self.assertTrue(mocked_view.called) def test_decorator_with_invalid_course_id(self): mocked_view = create_autospec(views.course_about) view_function = views.verify_course_id(mocked_view) - self.assertRaises(Http404, view_function, self.request, self.invalid_course_id) + self.assertRaises(Http404, view_function, self.request, course_id=self.invalid_course_id) self.assertFalse(mocked_view.called) diff --git a/lms/djangoapps/courseware/views.py b/lms/djangoapps/courseware/views.py index 6623219..b8d54c0 100644 --- a/lms/djangoapps/courseware/views.py +++ b/lms/djangoapps/courseware/views.py @@ -84,17 +84,18 @@ def user_groups(user): def verify_course_id(view_func): """ - This decorator should only be used with views whose second argument is course_id. + This decorator should only be used with views whose kwargs must contain course_id. If course_id is not valid raise 404. """ @wraps(view_func) - def _decorated(request, course_id, *args, **kwargs): + def _decorated(request, *args, **kwargs): + course_id = kwargs.get("course_id") try: SlashSeparatedCourseKey.from_deprecated_string(course_id) except InvalidKeyError: raise Http404 - response = view_func(request, course_id, *args, **kwargs) + response = view_func(request, *args, **kwargs) return response return _decorated