def test_launch_custom_landing_page(self): with self.settings( LTI_TOOL_CONFIGURATION=TEST_LTI_TOOL_CONFIGURATION, PYLTI_CONFIG={'consumers': CONSUMERS}, LTI_EXTRA_PARAMETERS=['lti_version']): ctx = LTICourseContextFactory() request = generate_lti_request(ctx, 'canvas') view = LTIRoutingView() view.request = request response = view.dispatch(request) landing = 'http://testserver/lti/landing/{}/?lti_version=LTI-1p0&' self.assertEquals(response.status_code, 302) self.assertTrue( response.url, landing.format(ctx.lms_course_context)) self.assertIsNotNone(request.session[LTI_SESSION_KEY]) user = request.user self.assertFalse(user.has_usable_password()) self.assertEquals(user.email, '*****@*****.**') self.assertEquals(user.get_full_name(), 'Foo Baz') self.assertTrue(user in ctx.group.user_set.all()) self.assertTrue(user in ctx.faculty_group.user_set.all())
def test_launch_invalid_user(self): request = generate_lti_request() response = LTIRoutingView().dispatch(request) self.assertEquals(response.status_code, 302) self.assertEquals(response.url, reverse('lti-fail-auth')) self.assertFalse(request.session.get(LTI_SESSION_KEY, False))
def test_launch_invalid_course(self): with self.settings( LTI_TOOL_CONFIGURATION=TEST_LTI_TOOL_CONFIGURATION, PYLTI_CONFIG={'consumers': CONSUMERS}): request = generate_lti_request() response = LTIRoutingView().dispatch(request) self.assertEquals(response.status_code, 302) self.assertEquals(response.url, reverse('lti-course-config')) self.assertTrue(request.session.get(LTI_SESSION_KEY, False))
def test_embed(self): with self.settings(PYLTI_CONFIG={'consumers': CONSUMERS}, LTI_EXTRA_PARAMETERS=['lti_version'], LTI_TOOL_CONFIGURATION=TEST_LTI_TOOL_CONFIGURATION): ctx = LTICourseContextFactory() request = generate_lti_request(ctx, 'canvas', 'embed') view = LTIRoutingView() view.request = request response = view.dispatch(request) self.assertEquals(response.status_code, 302) self.assertEquals( response.url, 'http://testserver/asset/embed/?return_url=/asset/' '<i_version=LTI-1p0&') self.assertIsNotNone(request.session[LTI_SESSION_KEY]) user = request.user self.assertFalse(user.has_usable_password()) self.assertEquals(user.email, '*****@*****.**') self.assertEquals(user.get_full_name(), 'Foo Baz') self.assertTrue(user in ctx.group.user_set.all()) self.assertTrue(user in ctx.faculty_group.user_set.all())
from django.conf.urls import url from lti_provider.views import LTIConfigView, LTILandingPage, LTIRoutingView, \ LTICourseEnableView, LTIPostGrade, LTIFailAuthorization, LTICourseConfigure urlpatterns = [ url(r'^config.xml$', LTIConfigView.as_view(), {}, 'lti-config'), url(r'^auth$', LTIFailAuthorization.as_view(), {}, 'lti-fail-auth'), url(r'^course/config$', LTICourseConfigure.as_view(), {}, 'lti-course-config'), url(r'^course/enable/$', LTICourseEnableView.as_view(), {}, 'lti-course-enable'), url(r'^landing/$', LTILandingPage.as_view(), {}, 'lti-landing-page'), url('^grade/$', LTIPostGrade.as_view(), {}, 'lti-post-grade'), url(r'^$', LTIRoutingView.as_view(), {}, 'lti-login'), url(r'^assignment/(?P<assignment_name>.*)/$', LTIRoutingView.as_view(), {}, 'lti-assignment-view'), ]
from django.urls import include, path from lti_provider.views import LTIConfigView, LTILandingPage, LTIRoutingView, \ LTICourseEnableView, LTIPostGrade, LTIFailAuthorization, LTICourseConfigure urlpatterns = [ path('config.xml', LTIConfigView.as_view(), name='lti-config'), path('auth', LTIFailAuthorization.as_view(), name='lti-fail-auth'), path('course/config', LTICourseConfigure.as_view(), name='lti-course-config'), path('course/enable/', LTICourseEnableView.as_view(), name='lti-course-enable'), path('landing/', LTILandingPage.as_view(), name='lti-landing-page'), path('grade/', LTIPostGrade.as_view(), name='lti-post-grade'), path('', LTIRoutingView.as_view(), name='lti-login'), path('assignment/<slug:assignment_name>/', LTIRoutingView.as_view(), name='lti-assignment-view'), ]