diff --git a/lti_consumer/lti_xblock.py b/lti_consumer/lti_xblock.py index 86620af6933a85b8954e4faf79e6c141ce72446e..077c27b6f78757a17a2e769acb53997b49f0f50c 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 d715ff245b2a6529dcd2d5a62a1da1f0ae580bb2..b05ae0db0bfbb19be8e44557828919ae7de154b7 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 2d3561e262fcf0469c7138544af803c04337282f..7b105cb6eefa33a32a74ffb922e66b25dded3cec 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 d97d926f826436af4518df60645c79f69da9084a..dcc1e5de3462402cd9d3baeb493c00517007fa19 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)