예제 #1
0
    def test_join_groups(self):
        mixin = LTIAuthMixin()
        ctx = LTICourseContextFactory()
        user = UserFactory()

        mixin.join_groups(self.lti, ctx, user)
        self.assertTrue(user in ctx.group.user_set.all())
        self.assertTrue(user in ctx.faculty_group.user_set.all())
예제 #2
0
    def test_join_groups_student(self):
        mixin = LTIAuthMixin()
        ctx = LTICourseContextFactory()
        user = UserFactory()

        self.lti.lti_params['roles'] = u'Learner'

        mixin.join_groups(self.lti, ctx, user)
        self.assertTrue(user in ctx.group.user_set.all())
        self.assertFalse(user in ctx.faculty_group.user_set.all())
예제 #3
0
    def test_reenable(self):
        view = LTICourseEnableView()
        ctx = LTICourseContextFactory()
        user = UserFactory()

        data = {
            'group': ctx.group.id,
            'faculty_group': ctx.faculty_group.id,
            'lti-enable': '1'
        }

        # enable the first time
        request = RequestFactory().post('/', data)
        request.user = user
        view.request = request

        view.dispatch(request)
        ctx.refresh_from_db()
        self.assertTrue(ctx.enable)
예제 #4
0
    def test_custom_course_context(self):
        lti = LTI('initial', 'any')

        with self.assertRaises(KeyError):
            lti.custom_course_context()

        lti.lti_params = BASE_LTI_PARAMS
        lti.lti_params['custom_course_context'] = 434
        with self.assertRaises(LTICourseContext.DoesNotExist):
            lti.custom_course_context()

        ctx = LTICourseContextFactory()
        lti.lti_params['custom_course_context'] = 'abc'
        with self.assertRaises(ValueError):
            lti.custom_course_context()

        lti.lti_params['custom_course_context'] = ctx.uuid
        with self.assertRaises(LTICourseContext.DoesNotExist):
            lti.custom_course_context()

        ctx.enable = True
        ctx.save()
        self.assertEquals(lti.custom_course_context(), ctx)
예제 #5
0
    def test_join_groups_teachingassistant(self):
        mixin = LTIAuthMixin()
        ctx = LTICourseContextFactory()
        user = UserFactory()

        self.lti.lti_params['roles'] = \
            u'urn:lti:role:ims/lis/TeachingAssistant'

        mixin.join_groups(self.lti, ctx, user)
        self.assertTrue(user in ctx.group.user_set.all())
        self.assertFalse(user in ctx.faculty_group.user_set.all())

        with self.settings(LTI_ELEVATE_TEACHINGASSISTANTS=['instructure.edu']):
            mixin.join_groups(self.lti, ctx, user)
            self.assertTrue(user in ctx.group.user_set.all())
            self.assertTrue(user in ctx.faculty_group.user_set.all())
예제 #6
0
    def test_launch_custom_landing_page(self):
        with self.settings(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())
예제 #7
0
    def test_embed(self):
        with self.settings(PYLTI_CONFIG={'consumers': CONSUMERS},
                           LTI_EXTRA_PARAMETERS=['lti_version']):
            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/'
                '&lti_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())