Esempio n. 1
0
 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'])
Esempio n. 2
0
 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)
Esempio n. 3
0
 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)
Esempio n. 4
0
 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'
     )
Esempio n. 5
0
 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)
Esempio n. 6
0
 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)
Esempio n. 7
0
 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)
Esempio n. 8
0
    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')
Esempio n. 9
0
 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')
Esempio n. 10
0
 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)
Esempio n. 11
0
    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')
Esempio n. 12
0
 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')
Esempio n. 13
0
 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)
Esempio n. 14
0
 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
     )
Esempio n. 15
0
 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')
Esempio n. 16
0
 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")
Esempio n. 17
0
 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')
Esempio n. 18
0
 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')
Esempio n. 19
0
 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)
Esempio n. 20
0
 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)
Esempio n. 21
0
 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)
Esempio n. 22
0
 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)
Esempio n. 23
0
 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)
Esempio n. 24
0
 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)
Esempio n. 25
0
 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)
Esempio n. 26
0
 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)
Esempio n. 27
0
 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')
Esempio n. 28
0
 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')
Esempio n. 29
0
 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",
     )
Esempio n. 30
0
 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')