def test_custom_parameters_ignore_keyword_args_without_custom_prefix( self, mock_set_custom_parameters): lti_embed( html_element_id=self.html_element_id, lti_launch_url=self.lti_launch_url, oauth_key=self.oauth_key, oauth_secret=self.oauth_secret, resource_link_id=self.resource_link_id, user_id=self.user_id, roles=self.roles, context_id=self.context_id, context_title=self.context_title, context_label=self.context_label, result_sourcedid=self.result_sourcedid, custom_parameter_1='custom_parameter_1', custom_parameter_2='custom_parameter_2', parameter_3='parameter_3', ) expected_custom_parameters = { 'custom_parameter_1': 'custom_parameter_1', 'custom_parameter_2': 'custom_parameter_2' } mock_set_custom_parameters.assert_called_with( expected_custom_parameters)
def test_non_keyword_arguments_raise_type_error(self): with self.assertRaises(TypeError): lti_embed( # pylint: disable=too-many-function-args,missing-kwoa self.html_element_id, self.lti_launch_url, self.oauth_key, self.oauth_secret, self.resource_link_id, self.user_id, self.roles, self.context_id, self.context_title, self.context_label, self.result_sourcedid)
def test_missing_required_arguments_raise_type_error(self): with self.assertRaises(TypeError): # Missing result_sourcedid lti_embed( # pylint: disable=missing-kwoa html_element_id=self.html_element_id, lti_launch_url=self.lti_launch_url, oauth_key=self.oauth_key, oauth_secret=self.oauth_secret, resource_link_id=self.resource_link_id, user_id=self.user_id, roles=self.roles, context_id=self.context_id, context_title=self.context_title, context_label=self.context_label)
def _get_lti_embed_code(self) -> str: """ Returns the LTI embed code for embedding in the program discussions tab Returns: HTML code to embed LTI in program page. """ resource_link_id = self._get_resource_link_id() result_sourcedid = self._get_result_sourcedid(resource_link_id) pii_params = self._get_pii_lti_parameters(self.configuration.lti_configuration, self.request) additional_params = self._get_additional_lti_parameters() return lti_embed( html_element_id='lti-tab-launcher', lti_consumer=self.configuration.lti_configuration.get_lti_consumer(), resource_link_id=quote(resource_link_id), user_id=quote(anonymous_id_for_user(self.request.user, None)), roles=self.get_user_roles(), context_id=quote(self.program_uuid), context_title=self._get_context_title(), context_label=self.program_uuid, result_sourcedid=quote(result_sourcedid), locale=to_locale(get_language()), **pii_params, **additional_params )
def test_consumer_initialized_properly(self, mock_lti_consumer_class): lti_embed( html_element_id=self.html_element_id, lti_launch_url=self.lti_launch_url, oauth_key=self.oauth_key, oauth_secret=self.oauth_secret, resource_link_id=self.resource_link_id, user_id=self.user_id, roles=self.roles, context_id=self.context_id, context_title=self.context_title, context_label=self.context_label, result_sourcedid=self.result_sourcedid ) mock_lti_consumer_class.assert_called_with(self.lti_launch_url, self.oauth_key, self.oauth_secret)
def test_make_template_rendered_with_correct_context_and_returned(self, mock_render_mako_template): fake_template = 'SOME_TEMPLATE' mock_render_mako_template.return_value = fake_template rendered_template = lti_embed( html_element_id=self.html_element_id, lti_launch_url=self.lti_launch_url, oauth_key=self.oauth_key, oauth_secret=self.oauth_secret, resource_link_id=self.resource_link_id, user_id=self.user_id, roles=self.roles, context_id=self.context_id, context_title=self.context_title, context_label=self.context_label, result_sourcedid=self.result_sourcedid, custom_parameter_1='custom_parameter_1', custom_parameter_2='custom_parameter_2', parameter_3='parameter_3', ) expected_context = { 'element_id': self.html_element_id, 'launch_url': self.lti_launch_url, 'lti_parameters': {'a': 1} } mock_render_mako_template.assert_called_with(ANY, expected_context) self.assertEqual(rendered_template, fake_template)
def _get_lti_embed_code(self, program_discussions_configuration, request) -> str: """ Returns the LTI embed code for embedding in the program discussions tab Args: program_discussions_configuration (ProgramDiscussionsConfiguration): ProgramDiscussionsConfiguration object. request (HttpRequest): Request object for view in which LTI will be embedded. Returns: HTML code to embed LTI in program page. """ program_uuid = program_discussions_configuration.program_uuid lti_consumer = program_discussions_configuration.lti_configuration.get_lti_consumer( ) user_id = str(request.user.id) context_id = program_uuid resource_link_id = self._get_resource_link_id(program_uuid, request) # TODO: Add support for multiple roles roles = self.DEFAULT_ROLE context_title = program_uuid result_sourcedid = self._get_result_sourcedid(context_id, resource_link_id, user_id) return lti_embed(html_element_id='lti-tab-launcher', lti_consumer=lti_consumer, resource_link_id=resource_link_id, user_id=user_id, roles=roles, context_id=context_id, context_title=context_title, context_label=context_id, result_sourcedid=result_sourcedid)
def _get_lti_embed_code(self, course: CourseDescriptor, request: HttpRequest) -> str: """ Returns the LTI embed code for embedding in the current course context. Args: course (CourseDescriptor): CourseDescriptor object. request (HttpRequest): Request object for view in which LTI will be embedded. Returns: HTML code to embed LTI in course page. """ course_key = course.id lti_config = self._get_lti_config(course) lti_consumer = lti_config.get_lti_consumer() user_id = quote(self._get_user_id(request.user, course_key)) context_id = quote(self._get_context_id(course_key)) resource_link_id = quote(self._get_resource_link_id(course_key, request)) roles = self._get_lti_roles(request.user, course_key) context_title = self._get_context_title(course) result_sourcedid = quote(self._get_result_sourcedid(context_id, resource_link_id, user_id)) additional_params = self._get_additional_lti_parameters(course, request) locale = to_locale(get_language()) return lti_embed( html_element_id='lti-tab-launcher', lti_consumer=lti_consumer, resource_link_id=resource_link_id, user_id=user_id, roles=roles, context_id=context_id, context_title=context_title, context_label=context_id, result_sourcedid=result_sourcedid, launch_presentation_locale=locale, **additional_params, )