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