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)
Exemple #4
0
    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)
Exemple #7
0
    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)
Exemple #8
0
    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,
        )