From bc9e56fc68fb88de5e625ce5bcde3fc311111a52 Mon Sep 17 00:00:00 2001 From: Alison Langston <46360176+alangsto@users.noreply.github.com> Date: Wed, 29 Jan 2025 12:39:16 -0500 Subject: [PATCH] fix: encode course id and username for lms request (#356) --- edx_exams/apps/router/interop.py | 6 ++++-- edx_exams/apps/router/tests/test_interop.py | 11 +++++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/edx_exams/apps/router/interop.py b/edx_exams/apps/router/interop.py index eab1f96a..606c1f18 100644 --- a/edx_exams/apps/router/interop.py +++ b/edx_exams/apps/router/interop.py @@ -88,12 +88,14 @@ def get_user_onboarding_data(course_id, username=None): Get user onboarding data given a course_id and optional username """ template = LMS_PROCTORED_EXAM_ONBOARDING_DATA_API_TPL + url_safe_course_id = quote_plus(course_id) if username: template += '&username={}' - path = template.format(course_id, username) + url_safe_username = quote_plus(username) + path = template.format(url_safe_course_id, url_safe_username) else: - path = template.format(course_id) + path = template.format(url_safe_course_id) response = _make_proctoring_request(path, 'GET') diff --git a/edx_exams/apps/router/tests/test_interop.py b/edx_exams/apps/router/tests/test_interop.py index a7978950..1f2f87f7 100644 --- a/edx_exams/apps/router/tests/test_interop.py +++ b/edx_exams/apps/router/tests/test_interop.py @@ -159,8 +159,8 @@ def test_get_provider_settings(self, response_status): @ddt.data( (200, None), (422, None), - (200, 'edx'), - (422, 'edx') + (200, 'edx@edx.org'), + (422, 'edx@edx.org') ) @mock_oauth_login @responses.activate @@ -171,12 +171,15 @@ def test_get_onboarding_data(self, response_status, username): HTTP exceptions are handled and response is returned for non-200 states codes """ + url_course_id = 'course-v1%3Aedx%2Btest%2Bf19' + url_username = 'edx%40edx.org' + self.lms_url = ( f'{settings.LMS_ROOT_URL}/api/edx_proctoring/v1/user_onboarding/status' - f'?is_learning_mfe=true&course_id={self.course_id}' + f'?is_learning_mfe=true&course_id={url_course_id}' ) if username: - self.lms_url += f'&username={username}' + self.lms_url += f'&username={url_username}' responder = responses.add( responses.GET,