@@ -85,7 +85,6 @@ class TestProperties(TestLtiConsumerXBlock):
8585 """
8686 Unit tests for LtiConsumerXBlock properties
8787 """
88-
8988 def test_descriptor (self ):
9089 """
9190 Test `descriptor` returns the XBLock object
@@ -304,13 +303,14 @@ def test_resource_link_id(self):
304303
305304 @patch ('lti_consumer.lti_xblock.LtiConsumerXBlock.context_id' )
306305 @patch ('lti_consumer.lti_xblock.LtiConsumerXBlock.resource_link_id' )
307- @patch ('lti_consumer.lti_xblock.LtiConsumerXBlock.anonymous_user_id' , PropertyMock ( return_value = FAKE_USER_ID ) )
308- def test_lis_result_sourcedid (self , mock_resource_link_id , mock_context_id ):
306+ @patch ('lti_consumer.lti_xblock.LtiConsumerXBlock.get_lti_1p1_user_id' )
307+ def test_lis_result_sourcedid (self , mock_get_external_user_id , mock_resource_link_id , mock_context_id ):
309308 """
310309 Test `lis_result_sourcedid` returns appropriate string
311310 """
312311 mock_resource_link_id .__get__ = Mock (return_value = 'resource_link_id' )
313312 mock_context_id .__get__ = Mock (return_value = 'context_id' )
313+ mock_get_external_user_id .return_value = FAKE_USER_ID
314314
315315 self .assertEqual (self .xblock .lis_result_sourcedid , f"context_id:resource_link_id:{ FAKE_USER_ID } " )
316316
@@ -668,6 +668,35 @@ def test_unauthenticated_user(self):
668668 self .xblock .extract_real_user_data ()
669669
670670
671+ @ddt .ddt
672+ class TestGetLti1p1UserId (TestLtiConsumerXBlock ):
673+ """ Unit tests for the get_lti_1p1_user_id method"""
674+ def setUp (self ):
675+ super ().setUp ()
676+
677+ # Mock out the anonymous_user_id and external_user_id properties.
678+ fake_user = Mock ()
679+ fake_user .opt_attrs = {
680+ 'edx-platform.user_id' : 1 ,
681+ 'edx-platform.user_role' : 'studnent' ,
682+ 'edx-platform.is_authenticated' : True ,
683+ 'edx-platform.anonymous_user_id' : 'anonymous_user_id' ,
684+ }
685+ self .xblock .runtime .service (self , 'user' ).get_current_user = Mock (return_value = fake_user )
686+ self .xblock .runtime .service (self , 'user' ).get_external_user_id = Mock (return_value = "external_user_id" )
687+
688+ @ddt .data (
689+ (True , 'external_user_id' ),
690+ (False , 'anonymous_user_id' ),
691+ )
692+ @ddt .unpack
693+ def test_external_user_id_flag_enabled (self , external_user_id_1p1_launches_enabled_value , expected_value ):
694+ with patch ('lti_consumer.lti_xblock.external_user_id_1p1_launches_enabled' ) as \
695+ external_user_id_1p1_launches_enabled :
696+ external_user_id_1p1_launches_enabled .return_value = external_user_id_1p1_launches_enabled_value
697+ self .assertEqual (self .xblock .get_lti_1p1_user_id (), expected_value )
698+
699+
671700class TestStudentView (TestLtiConsumerXBlock ):
672701 """
673702 Unit tests for LtiConsumerXBlock.student_view()
@@ -783,6 +812,11 @@ def setUp(self):
783812
784813 self .xblock .runtime .service (self , 'user' ).get_current_user = Mock (return_value = fake_user )
785814
815+ self .mock_external_user_ids_patcher = patch ("lti_consumer.lti_xblock.external_user_id_1p1_launches_enabled" )
816+ self .mock_external_user_ids_patcher_enabled = self .mock_external_user_ids_patcher .start ()
817+ self .mock_external_user_ids_patcher_enabled .return_value = False
818+ self .addCleanup (self .mock_external_user_ids_patcher .stop )
819+
786820 @patch ('lti_consumer.lti_xblock.LtiConsumerXBlock.course' )
787821 @patch ('lti_consumer.lti_xblock.LtiConsumerXBlock.anonymous_user_id' , PropertyMock (return_value = FAKE_USER_ID ))
788822 def test_generate_launch_request_called (self , mock_course ):
0 commit comments