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>'))
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)
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
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)