From 886674c9509fd1ca08b9201cf121dc01da131848 Mon Sep 17 00:00:00 2001 From: Kshitij Sobti <kshitij@sobti.in> Date: Wed, 5 Oct 2022 16:48:53 +0530 Subject: [PATCH] refactor: replace usage of get_real_user with UserService --- lti_consumer/lti_xblock.py | 2 +- lti_consumer/outcomes.py | 5 +++-- lti_consumer/tests/unit/test_lti_xblock.py | 6 +++++- lti_consumer/tests/unit/test_outcomes.py | 6 +++++- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lti_consumer/lti_xblock.py b/lti_consumer/lti_xblock.py index 86620af..077c27b 100644 --- a/lti_consumer/lti_xblock.py +++ b/lti_consumer/lti_xblock.py @@ -1293,7 +1293,7 @@ class LtiConsumerXBlock(StudioEditableXBlockMixin, XBlock): except LtiError: return Response(status=401) # Unauthorized in this case. 401 is right - user = self.runtime.get_real_user(anon_id) + user = self.runtime.service(self, 'user').get_user_by_anonymous_id(anon_id) if not user: # that means we can't save to database, as we do not have real user id. msg = _("[LTI]: Real user not found against anon_id: {}").format(anon_id) log.info(msg) diff --git a/lti_consumer/outcomes.py b/lti_consumer/outcomes.py index d715ff2..b05ae0d 100644 --- a/lti_consumer/outcomes.py +++ b/lti_consumer/outcomes.py @@ -6,8 +6,8 @@ https://www.imsglobal.org/specs/ltiomv1p0 """ import logging -import urllib.parse from xml.sax.saxutils import escape +from urllib.parse import unquote from lxml import etree from xblockutils.resources import ResourceLoader @@ -183,7 +183,8 @@ class OutcomeService: log.debug("[LTI]: %s", error_message) return response_xml_template.format(**failure_values) - real_user = self.xblock.runtime.get_real_user(urllib.parse.unquote(sourced_id.split(':')[-1])) + anon_id = unquote(sourced_id.split(':')[-1]) + real_user = self.xblock.runtime.service(self, 'user').get_user_by_anonymous_id(anon_id) if not real_user: # that means we can't save to database, as we do not have real user id. failure_values['imsx_messageIdentifier'] = escape(imsx_message_identifier) failure_values['imsx_description'] = "User not found." diff --git a/lti_consumer/tests/unit/test_lti_xblock.py b/lti_consumer/tests/unit/test_lti_xblock.py index 2d3561e..7b105cb 100644 --- a/lti_consumer/tests/unit/test_lti_xblock.py +++ b/lti_consumer/tests/unit/test_lti_xblock.py @@ -998,7 +998,11 @@ class TestResultServiceHandler(TestLtiConsumerXBlock): Test 404 response returned when a user cannot be found """ mock_parse_suffix.return_value = FAKE_USER_ID - self.xblock.runtime.get_real_user.return_value = None + self.xblock.runtime.service = Mock( + return_value=Mock( + get_user_by_anonymous_id=Mock(return_value=None) + ) + ) response = self.xblock.result_service_handler(make_request('', 'GET')) self.assertEqual(response.status_code, 404) diff --git a/lti_consumer/tests/unit/test_outcomes.py b/lti_consumer/tests/unit/test_outcomes.py index d97d926..dcc1e5d 100644 --- a/lti_consumer/tests/unit/test_outcomes.py +++ b/lti_consumer/tests/unit/test_outcomes.py @@ -416,7 +416,11 @@ class TestOutcomeService(TestLtiConsumerXBlock): Test user not found returns failure response """ request = make_request('') - self.xblock.runtime.get_real_user.return_value = None + self.xblock.runtime.service = Mock( + return_value=Mock( + get_user_by_anonymous_id=Mock(return_value=None) + ) + ) response = self.outcome_servce.handle_request(request) self.assertIn('failure', response) -- GitLab