From 2ecb4daece382b4d4ca6c5580083062bedde7287 Mon Sep 17 00:00:00 2001 From: Kshitij Sobti Date: Thu, 21 Oct 2021 20:54:40 +0530 Subject: [PATCH] fix: update course URL match pattern to also match learning MFE (#29050) The learning MFE paths include /course/{course_id} which doesn't match /courses/{course_id} which is what the regex expects. This causes issues with the Wiki when when accessed from the learning MFE doesn't detect that course it's related to in the middleware. --- openedx/core/lib/request_utils.py | 2 +- openedx/core/lib/tests/test_request_utils.py | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/openedx/core/lib/request_utils.py b/openedx/core/lib/request_utils.py index bd0cad3806..371287fdb0 100644 --- a/openedx/core/lib/request_utils.py +++ b/openedx/core/lib/request_utils.py @@ -18,7 +18,7 @@ from rest_framework.views import exception_handler from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers # accommodates course api urls, excluding any course api routes that do not fall under v*/courses, such as v1/blocks. -COURSE_REGEX = re.compile(fr'^(.*?/courses/)(?!v[0-9]+/[^/]+){settings.COURSE_ID_PATTERN}') +COURSE_REGEX = re.compile(fr'^(.*?/course(s)?/)(?!v[0-9]+/[^/]+){settings.COURSE_ID_PATTERN}') # .. toggle_name: request_utils.capture_cookie_sizes # .. toggle_implementation: WaffleFlag diff --git a/openedx/core/lib/tests/test_request_utils.py b/openedx/core/lib/tests/test_request_utils.py index e9d2e2bec2..35369deb6f 100644 --- a/openedx/core/lib/tests/test_request_utils.py +++ b/openedx/core/lib/tests/test_request_utils.py @@ -73,7 +73,6 @@ class RequestUtilTestCase(unittest.TestCase): """ Test course_id_from_url(). """ assert course_id_from_url('/login') is None - assert course_id_from_url('/course/edX/maths/2020') is None assert course_id_from_url('/courses/edX/maths/') is None assert course_id_from_url('/api/courses/v1/blocks/edX/maths/2020') is None assert course_id_from_url('/api/courses/v1/blocks/course-v1:incidental+courseid+formatting') is None @@ -82,9 +81,15 @@ class RequestUtilTestCase(unittest.TestCase): course_id = course_id_from_url('/courses/course-v1:edX+maths+2020') self.assertCourseIdFieldsMatch(course_id=course_id, org="edX", course='maths', run='2020') + course_id = course_id_from_url('/course/course-v1:edX+maths+2020') + self.assertCourseIdFieldsMatch(course_id=course_id, org="edX", course='maths', run='2020') + course_id = course_id_from_url('/courses/edX/maths/2020') self.assertCourseIdFieldsMatch(course_id=course_id, org='edX', course='maths', run='2020') + course_id = course_id_from_url('/course/edX/maths/2020') + self.assertCourseIdFieldsMatch(course_id=course_id, org="edX", course='maths', run='2020') + course_id = course_id_from_url('/api/courses/v1/courses/course-v1:edX+maths+2020') self.assertCourseIdFieldsMatch(course_id=course_id, org='edX', course='maths', run='2020')