def test_valid_launch(self, render): """ Verifies that the LTI launch succeeds when passed a valid request. """ request = build_launch_request() views.lti_launch(request, unicode(COURSE_KEY), unicode(USAGE_KEY)) render.assert_called_with(request, ALL_PARAMS['usage_key'])
def test_valid_launch(self, render): """ Verifies that the LTI launch succeeds when passed a valid request. """ request = build_launch_request() views.lti_launch(request, COURSE_PARAMS['course_id'], COURSE_PARAMS['usage_id']) render.assert_called_with(request, ALL_PARAMS)
def test_outcome_service_registered(self, _authenticate, store_params, _render): """ Verifies that the LTI launch succeeds when passed a valid request. """ request = build_launch_request() views.lti_launch(request, unicode(COURSE_PARAMS["course_key"]), unicode(COURSE_PARAMS["usage_key"])) store_params.assert_called_with(ALL_PARAMS, request.user, self.consumer)
def test_optional_parameters_in_session(self, _run): """ Verifies that the outcome-related optional LTI parameters are properly stored in the session """ request = build_launch_request() request.POST.update(LTI_OPTIONAL_PARAMS) views.lti_launch( request, unicode(COURSE_PARAMS['course_key']), unicode(COURSE_PARAMS['usage_key']) ) session = request.session[views.LTI_SESSION_KEY] self.assertEqual( session['lis_result_sourcedid'], u'result sourcedid', 'Result sourcedid not set in the session' ) self.assertEqual( session['lis_outcome_service_url'], u'outcome service URL', 'Outcome service URL not set in the session' ) self.assertEqual( session['tool_consumer_instance_guid'], u'consumer instance guid', 'Consumer instance GUID not set in the session' )
def test_valid_launch(self, _authenticate, render): """ Verifies that the LTI launch succeeds when passed a valid request. """ request = build_launch_request() views.lti_launch(request, unicode(COURSE_KEY), unicode(USAGE_KEY)) render.assert_called_with(request, USAGE_KEY)
def test_lti_consumer_record_supplemented_with_guid(self, _render): self.mock_verify.return_value = False request = build_launch_request(LTI_OPTIONAL_PARAMS) with self.assertNumQueries(3): views.lti_launch(request, None, None) consumer = models.LtiConsumer.objects.get( consumer_key=LTI_DEFAULT_PARAMS['oauth_consumer_key']) self.assertEqual(consumer.instance_guid, u'consumer instance guid')
def test_lti_consumer_record_supplemented_with_guid(self, _render): SignatureValidator.verify = MagicMock(return_value=False) request = build_launch_request() request.POST.update(LTI_OPTIONAL_PARAMS) with self.assertNumQueries(4): views.lti_launch(request, None, None) consumer = models.LtiConsumer.objects.get( consumer_key=LTI_DEFAULT_PARAMS['oauth_consumer_key']) self.assertEqual(consumer.instance_guid, u'consumer instance guid')
def test_valid_launch_with_optional_params(self, _authenticate, store_params, _render): """ Verifies that the LTI launch succeeds when passed a valid request. """ request = build_launch_request(extra_post_data=LTI_OPTIONAL_PARAMS) views.lti_launch(request, unicode(COURSE_KEY), unicode(USAGE_KEY)) store_params.assert_called_with( dict(ALL_PARAMS.items() + LTI_OPTIONAL_PARAMS.items()), request.user, self.consumer)
def test_lti_consumer_record_supplemented_with_guid(self, _render): self.mock_verify.return_value = False request = build_launch_request(LTI_OPTIONAL_PARAMS) with self.assertNumQueries(3): views.lti_launch(request, None, None) consumer = models.LtiConsumer.objects.get( consumer_key=LTI_DEFAULT_PARAMS['oauth_consumer_key'] ) self.assertEqual(consumer.instance_guid, u'consumer instance guid')
def test_lti_consumer_record_supplemented_with_guid(self, _render): SignatureValidator.verify = MagicMock(return_value=False) request = build_launch_request() request.POST.update(LTI_OPTIONAL_PARAMS) with self.assertNumQueries(4): views.lti_launch(request, None, None) consumer = models.LtiConsumer.objects.get( consumer_key=LTI_DEFAULT_PARAMS['oauth_consumer_key'] ) self.assertEqual(consumer.instance_guid, u'consumer instance guid')
def test_outcome_service_registered(self, _authenticate, store_params, _render): """ Verifies that the LTI launch succeeds when passed a valid request. """ request = build_launch_request() views.lti_launch(request, unicode(COURSE_PARAMS['course_key']), unicode(COURSE_PARAMS['usage_key'])) store_params.assert_called_with(ALL_PARAMS, request.user, self.consumer)
def test_valid_launch_with_optional_params(self, _authenticate, store_params, _render): """ Verifies that the LTI launch succeeds when passed a valid request. """ request = build_launch_request(extra_post_data=LTI_OPTIONAL_PARAMS) views.lti_launch(request, unicode(COURSE_KEY), unicode(USAGE_KEY)) store_params.assert_called_with( dict(ALL_PARAMS.items() + LTI_OPTIONAL_PARAMS.items()), request.user, self.consumer )
def test_session_contents_after_launch(self, _run): """ Verifies that the LTI parameters and the course and usage IDs are properly stored in the session """ request = build_launch_request() views.lti_launch(request, COURSE_PARAMS['course_id'], COURSE_PARAMS['usage_id']) session = request.session[views.LTI_SESSION_KEY] self.assertEqual(session['course_id'], 'CourseID', 'Course ID not set in the session') self.assertEqual(session['usage_id'], 'UsageID', 'Usage ID not set in the session') for key in views.REQUIRED_PARAMETERS: self.assertEqual(session[key], request.POST[key], key + ' not set in the session')
def test_session_contents_after_launch(self, _authenticate, _run): """ Verifies that the LTI parameters and the course and usage IDs are properly stored in the session """ request = build_launch_request() views.lti_launch(request, unicode(COURSE_KEY), unicode(USAGE_KEY)) session = request.session[views.LTI_SESSION_KEY] self.assertEqual(session["course_key"], COURSE_KEY, "Course key not set in the session") self.assertEqual(session["usage_key"], USAGE_KEY, "Usage key not set in the session") for key in views.REQUIRED_PARAMETERS: self.assertEqual(session[key], request.POST[key], key + " not set in the session")
def test_session_contents_after_launch(self, _run): """ Verifies that the LTI parameters and the course and usage IDs are properly stored in the session """ request = self.build_request() views.lti_launch(request, 'CourseID', 'UsageID') session = request.session[views.LTI_SESSION_KEY] self.assertEqual(session['course_id'], 'CourseID', 'Course ID not set in the session') self.assertEqual(session['usage_id'], 'UsageID', 'Usage ID not set in the session') for key in views.REQUIRED_PARAMETERS: self.assertEqual(session[key], request.POST[key], key + ' not set in the session')
def test_session_contents_after_launch(self, _authenticate, _run): """ Verifies that the LTI parameters and the course and usage IDs are properly stored in the session """ request = build_launch_request() views.lti_launch(request, unicode(COURSE_KEY), unicode(USAGE_KEY)) session = request.session[views.LTI_SESSION_KEY] self.assertEqual(session['course_key'], COURSE_KEY, 'Course key not set in the session') self.assertEqual(session['usage_key'], USAGE_KEY, 'Usage key not set in the session') for key in views.REQUIRED_PARAMETERS: self.assertEqual(session[key], request.POST[key], key + ' not set in the session')
def launch_with_missing_parameter(self, missing_param): """ Helper method to remove a parameter from the LTI launch and call the view """ request = build_launch_request() del request.POST[missing_param] return views.lti_launch(request, None, None)
def test_valid_launch(self): """ Verifies that the LTI launch succeeds when passed a valid request. """ request = self.build_request() response = views.lti_launch(request, None, None) self.assertEqual(response.status_code, 200)
def test_launch_with_disabled_feature_flag(self): """ Verifies that the LTI launch will fail if the ENABLE_LTI_PROVIDER flag is not set """ with patch.dict('django.conf.settings.FEATURES', {'ENABLE_LTI_PROVIDER': False}): request = build_launch_request() response = views.lti_launch(request, None, None) self.assertEqual(response.status_code, 403)
def test_forbidden_if_signature_fails(self): """ Verifies that the view returns Forbidden if the LTI OAuth signature is incorrect. """ SignatureValidator.verify = MagicMock(return_value=False) request = build_launch_request() response = views.lti_launch(request, None, None) self.assertEqual(response.status_code, 403)
def test_optional_parameters_in_session(self, _authenticate, _run): """ Verifies that the outcome-related optional LTI parameters are properly stored in the session """ request = build_launch_request() request.POST.update(LTI_OPTIONAL_PARAMS) views.lti_launch(request, unicode(COURSE_PARAMS['course_key']), unicode(COURSE_PARAMS['usage_key'])) session = request.session[views.LTI_SESSION_KEY] self.assertEqual(session['lis_result_sourcedid'], u'result sourcedid', 'Result sourcedid not set in the session') self.assertEqual(session['lis_outcome_service_url'], u'outcome service URL', 'Outcome service URL not set in the session') self.assertEqual(session['tool_consumer_instance_guid'], u'consumer instance guid', 'Consumer instance GUID not set in the session')
def test_redirect_for_non_authenticated_user(self): """ Verifies that if the lti_launch view is called by an unauthenticated user, the response will redirect to the login page with the correct URL """ request = build_launch_request(False) response = views.lti_launch(request, None, None) self.assertEqual(response.status_code, 302) self.assertEqual(response['Location'], '/accounts/login?next=/lti_provider/lti_run')
def test_optional_parameters_in_session(self, _authenticate, _run): """ Verifies that the outcome-related optional LTI parameters are properly stored in the session """ request = build_launch_request() request.POST.update(LTI_OPTIONAL_PARAMS) views.lti_launch(request, unicode(COURSE_PARAMS["course_key"]), unicode(COURSE_PARAMS["usage_key"])) session = request.session[views.LTI_SESSION_KEY] self.assertEqual( session["lis_result_sourcedid"], u"result sourcedid", "Result sourcedid not set in the session" ) self.assertEqual( session["lis_outcome_service_url"], u"outcome service URL", "Outcome service URL not set in the session" ) self.assertEqual( session["tool_consumer_instance_guid"], u"consumer instance guid", "Consumer instance GUID not set in the session", )