def test_deep_link_launch_success(self):
        tool_conf, login_request, login_response = self._make_oidc_login(
            uuid_val='462a941bbf6a4356afa7')

        launch_request = FakeRequest(post=self.post_launch_data,
                                     cookies=login_response.get_cookies_dict(),
                                     session=login_request.session)
        validated_message_launch = self._launch(launch_request,
                                                tool_conf,
                                                force_validation=True)
        message_launch_data = validated_message_launch.get_launch_data()
        self.assertDictEqual(message_launch_data,
                             self.expected_message_launch_data)

        resource = DeepLinkResource()
        resource.set_url('http://lti.django.test/launch/') \
            .set_custom_params({'custom_param': 'custom_value'}) \
            .set_title('Test title!')

        deep_link_return_url = message_launch_data.get(
            'https://purl.imsglobal.org/spec/lti-dl/'
            'claim/deep_linking_settings').get('deep_link_return_url')

        html = validated_message_launch.get_deep_link().output_response_form(
            [resource])
        self.assertTrue(
            html.startswith(
                '<form id="lti13_deep_link_auto_submit" action="%s" method="POST">'
                % deep_link_return_url))
        self.assertTrue('<input type="hidden" name="JWT" value=' in html)
        self.assertTrue(
            html.endswith(
                '<script type="text/javascript">'
                'document.getElementById(\'lti13_deep_link_auto_submit\').submit();'
                '</script>'))
Exemple #2
0
def configure(request, launch_id, difficulty):
    tool_conf = ToolConfJsonFile(get_lti_config_path())
    message_launch = ExtendedDjangoMessageLaunch.from_cache(launch_id, request, tool_conf)

    if not message_launch.is_deep_link_launch():
        return HttpResponseForbidden('Must be a deep link!')

    launch_url = request.build_absolute_uri(reverse('game-launch'))

    resource = DeepLinkResource()
    resource.set_url(launch_url)\
        .set_custom_params({'difficulty': difficulty})\
        .set_title('Breakout ' + difficulty + ' mode!')

    html = message_launch.get_deep_link().output_response_form([resource])
    return HttpResponse(html)
Exemple #3
0
def configure(launch_id, difficulty):
    tool_conf = ToolConfJsonFile(get_lti_config_path())
    flask_request = FlaskRequest()
    message_launch = ExtendedFlaskMessageLaunch.from_cache(
        launch_id, flask_request, tool_conf)

    if not message_launch.is_deep_link_launch():
        raise Forbidden('Must be a deep link!')

    launch_url = url_for('launch', _external=True)

    resource = DeepLinkResource()
    resource.set_url(launch_url) \
        .set_custom_params({'difficulty': difficulty}) \
        .set_title('Breakout ' + difficulty + ' mode!')

    html = message_launch.get_deep_link().output_response_form([resource])
    return html
Exemple #4
0
def deepLink():
    tool_conf = ToolConfJsonFile(get_lti_config_path())
    flask_request = FlaskRequest()
    launch_data_storage = get_launch_data_storage()
    message_launch = ExtendedFlaskMessageLaunch(
        flask_request, tool_conf, launch_data_storage=launch_data_storage)
    message_launch_data = message_launch.get_launch_data()

    resource = DeepLinkResource()
    resource.set_url('https://inviguluscanvas.online/launch/') \
        .set_custom_params({'text': 'Invigulus'}) \
        .set_title('LTI Launch Invigulus')

    html = message_launch.get_deep_link().output_response_form([resource])
    app.logger.info(html)
    return html

    pprint.pprint(message_launch_data)