示例#1
0
    def test_get_format(self):
        """Test get format."""
        course1 = factory.make_course('Portfolio2016', 'PAV', author=self.rein)
        course2 = factory.make_course('Portfolio2017', 'PAV', author=self.rein)
        course3 = factory.make_course('Portfolio2018', 'PAV')
        template = factory.make_entry_template('template')
        format = factory.make_format([template])
        assignment = factory.make_assignment(
            'Colloq',
            'description1',
            format=format,
            courses=[course1, course2, course3])
        login = test.logging_in(self, self.rein_user, self.rein_pass)
        response = test.api_get_call(self,
                                     '/formats/' + str(assignment.pk) + '/',
                                     login)
        self.assertEquals(response.json()['format']['templates'][0]['name'],
                          'template')

        # permissions and authorization check for the api call.
        login = test.logging_in(self, self.no_perm_user, self.no_perm_pass)
        test.api_get_call(self,
                          '/formats/' + str(assignment.pk) + '/',
                          login,
                          status=403)
        test.api_get_call(self,
                          '/formats/' + str(self.not_found_pk) + '/',
                          login,
                          status=404)
        test.test_unauthorized_api_get_call(
            self, '/formats/' + str(assignment.pk) + '/')
示例#2
0
    def test_get_instance(self):
        student = test.logging_in(self, self.studentname, self.studentpass)
        superuser = test.logging_in(self, self.supername, self.superpass)

        test.api_get_call(self, '/instance/0/', login=student)
        test.api_get_call(self, '/instance/0/', login=superuser)
        self.assertEqual(Instance.objects.all().first().name, 'eJournal')
示例#3
0
    def test_get_names(self):
        """Test get names function."""
        course = factory.make_course('Portfolio', 'PAV', author=self.rein)
        template = factory.make_entry_template('template')
        format = factory.make_format([template])
        assignment = factory.make_assignment('Colloq',
                                             'description1',
                                             format=format,
                                             courses=[course],
                                             is_published=True)
        student_user, student_pass, student = test.set_up_user_and_auth(
            'student', 'pass', '*****@*****.**', 'first', 'last')
        test.set_up_participation(student, course, 'Student')
        journal = test.set_up_journal(assignment, template, student, 4)

        login = test.logging_in(self, student_user, student_pass)
        url = '/names/{}/{}/{}/'.format(course.pk, assignment.pk, journal.pk)
        result = test.api_get_call(self, url, login).json()
        self.assertEquals(result['names']['course'], 'Portfolio')
        self.assertEquals(result['names']['journal'], 'first last')
        self.assertEquals(result['names']['assignment'], 'Colloq')

        # permissions and authorization check for the api call.
        login = test.logging_in(self, self.no_perm_user, self.no_perm_pass)
        test.api_get_call(self, url, login, status=403)
示例#4
0
    def test_get_course_users(self):
        """Test the get course users function."""
        teacher_user, teacher_pass, teacher = test.set_up_user_and_auth(
            'teacher', 'pass', '*****@*****.**')
        test.set_up_participation(teacher, self.course, 'Teacher')
        test.set_up_participation(self.lars, self.course, 'Student')
        test.set_up_participation(self.rein, self.course, 'TA')

        login = test.logging_in(self, teacher_user, teacher_pass)

        response = test.api_get_call(self,
                                     '/participations/',
                                     login,
                                     params={'course_id': self.course.pk})

        self.assertEquals(len(response.json()['participants']), 3)

        response = test.api_get_call(self,
                                     '/participations/unenrolled/',
                                     login,
                                     params={
                                         'course_id': self.course.pk,
                                         'unenrolled_query': 'test123'
                                     })

        self.assertEquals(len(response.json()['participants']), 1)
        self.assertEquals(response.json()['participants'][0]['username'],
                          self.username)

        # permissions and authorization check for the api call.
        login = test.logging_in(self, self.no_perm_user, self.no_perm_pass)
        test.api_get_call(self,
                          '/participations/',
                          login,
                          status=403,
                          params={'course_id': self.course.pk})
        test.api_get_call(self,
                          '/participations/',
                          login,
                          status=404,
                          params={'course_id': self.not_found_pk})
        test.test_unauthorized_api_get_call(
            self, '/participations/', params={'course_id': self.not_found_pk})
        test.test_unauthorized_api_get_call(
            self, '/courses/' + str(self.course.pk) + '/')
        test.test_unauthorized_api_get_call(
            self,
            '/participations/unenrolled/',
            params={'course_id': self.course.pk})

        test.set_up_participation(self.no_permission_user, self.course,
                                  'Student')
        test.api_get_call(self,
                          '/participations/',
                          login,
                          status=403,
                          params={'course_id': self.course.pk})
示例#5
0
    def test_update_instance(self):
        student = test.logging_in(self, self.studentname, self.studentpass)
        superuser = test.logging_in(self, self.supername, self.superpass)

        test.api_patch_call(self,
                            '/instance/0/', {'name': 'UvA'},
                            login=student,
                            status=403)
        test.api_patch_call(self,
                            '/instance/0/', {'name': 'UvA'},
                            login=superuser)
        self.assertEqual(Instance.objects.all().first().name, 'UvA')
示例#6
0
    def test_assignment_journals(self):
        """Test the get assignment journals function."""
        course = factory.make_course('Portfolio', 'PAV', author=self.rein)
        template = factory.make_entry_template('template')
        format = factory.make_format([template])
        assignment = factory.make_assignment('Colloq',
                                             'description1',
                                             format=format,
                                             courses=[course])
        students = test.set_up_users('student', 2)
        for student in students:
            test.set_up_participation(student, course, 'Student')
            test.set_up_journal(assignment, template, student, 4)

        login = test.logging_in(self, self.rein_user, self.rein_pass)
        response = test.api_get_call(self,
                                     '/journals/',
                                     login,
                                     params={
                                         'course_id': course.pk,
                                         'assignment_id': assignment.pk
                                     })
        result = response.json()
        self.assertEquals(len(result['journals']), 2)

        # permissions and authorization check for the api call.
        login = test.logging_in(self, self.no_perm_user, self.no_perm_pass)
        test.api_get_call(self,
                          '/journals/',
                          login,
                          status=403,
                          params={
                              'course_id': course.pk,
                              'assignment_id': assignment.pk
                          })
        test.api_get_call(self,
                          '/journals/',
                          login,
                          status=404,
                          params={
                              'course_id': course.pk,
                              'assignment_id': self.not_found_pk
                          })

        test.api_get_call(self, '/journals/', login, status=400, params={})
        test.test_unauthorized_api_get_call(self,
                                            '/journals/',
                                            params={
                                                'course_id': course.pk,
                                                'assignment_id':
                                                self.not_found_pk
                                            })
示例#7
0
    def test_update_password(self):
        """Test update password."""
        login = test.logging_in(self, self.username, self.password)

        test.api_patch_call(self, '/users/password/', {
            'new_password': '******',
            'old_password': self.password
        }, login)

        test.logging_in(self, self.username, 'Pass123!')

        test.api_patch_call(self, '/users/password/', {
            'new_password': '******',
            'old_password': '******'
        }, login)
示例#8
0
    def test_create_entry(self):
        """"Test create entry."""
        _, _, user2 = test.set_up_user_and_auth('testh', 'test123h',
                                                '*****@*****.**')

        course = factory.make_course('Portfolio', 'PAV', author=user2)
        template = factory.make_entry_template("some_template")
        format = factory.make_format([template])
        assignment = factory.make_assignment("Assignment",
                                             "Your favorite assignment",
                                             format=format,
                                             courses=[course])
        journal = factory.make_journal(assignment, self.user)
        field = factory.make_field(template, 'Some field', 0)
        login = test.logging_in(self, self.username, self.password)
        format.available_templates.add(template)

        role = factory.make_role_default_no_perms("student",
                                                  course,
                                                  can_have_journal=True)
        factory.make_participation(user=self.user, course=course, role=role)

        create_entry_dict = {
            'journal_id': journal.id,
            'template_id': template.id,
            'content': [{
                'id': field.pk,
                'data': "This is some data"
            }]
        }

        test.api_post_call(self, '/entries/', create_entry_dict, login, 201)
        self.assertTrue(Entry.objects.filter(node__journal=journal).exists())
        self.assertEquals(
            Content.objects.get(entry=1).data, "This is some data")
示例#9
0
    def test_update_user_role_course(self):
        """Test user role update in a course."""
        login = test.logging_in(self, self.rein_user, self.rein_pass)
        course = factory.make_course("Portfolio Academische Vaardigheden",
                                     "PAV",
                                     author=self.rein)

        ta_role = Role.objects.get(name='TA', course=course)
        student_role = factory.make_role_student(name='SD', course=course)

        self.user_role = factory.make_user("test123", "test", "*****@*****.**")
        factory.make_participation(self.user_role, course, ta_role)
        factory.make_participation(self.user, course, student_role)

        user_role = Participation.objects.get(user=self.user_role,
                                              course=course).role.name
        self.assertEquals(user_role, 'TA')

        test.api_patch_call(self, '/participations/' + str(course.pk) + '/', {
            'user_id': self.user_role.pk,
            'role': 'SD'
        }, login)
        user_role = Participation.objects.get(user=self.user_role,
                                              course=course.pk).role.name
        self.assertEquals(user_role, 'SD')
示例#10
0
    def test_update_format(self):
        """Test update format function."""
        course = factory.make_course('Portfolio', 'PAV', author=self.rein)
        template = factory.make_entry_template('template')
        format = factory.make_format([template])
        assignment = factory.make_assignment('Colloq',
                                             'description1',
                                             format=format,
                                             courses=[course])

        login = test.logging_in(self, self.rein_user, self.rein_pass)

        update_dict = {
            'assignment_details': {
                'name': 'Colloq',
                'description': 'description1',
                'is_published': True
            },
            'templates': [
                serialize.TemplateSerializer(template).data
                for template in format.available_templates.all()
            ],
            'removed_presets': [],
            'removed_templates': [],
            'presets': [],
            'unused_templates': []
        }

        test.api_patch_call(self, '/formats/' + str(assignment.pk) + '/',
                            update_dict, login)
示例#11
0
    def test_get_comments(self):
        """Test update comment function."""
        course = factory.make_course('Portfolio', 'PAV', author=self.rein)
        template = factory.make_entry_template('template')
        format = factory.make_format([template])
        assignment = factory.make_assignment('Colloq',
                                             'description1',
                                             format=format,
                                             courses=[course])
        student_user, student_pass, student = test.set_up_user_and_auth(
            'student', 'pass', '*****@*****.**')
        test.set_up_participation(student, course, 'Student')
        journal = factory.make_journal(assignment, student)
        entry = factory.make_entry(template)
        factory.make_node(journal, entry)
        comment = factory.make_comment(entry, self.rein, 'Excellent!', True)

        login = test.logging_in(self, self.rein_user, self.rein_pass)

        update_dict = {'text': 'Bad!'}
        test.api_patch_call(self, '/comments/' + str(comment.pk) + '/',
                            update_dict, login)

        q_comment = Comment.objects.get(pk=comment.pk)
        self.assertEquals(q_comment.text, 'Bad!')
示例#12
0
    def test_update_course_roles(self):
        """Test update course roles"""
        teacher_user, teacher_pass, teacher = test.set_up_user_and_auth(
            'Teacher', 'pass', '*****@*****.**')
        teacher_role = factory.make_role_teacher("TE", self.course)

        factory.make_role_ta('TA2', self.course)
        factory.make_participation(teacher, self.course, teacher_role)

        login = test.logging_in(self, teacher_user, teacher_pass)
        result = test.api_get_call(self,
                                   '/roles/',
                                   login,
                                   params={'course_id': self.course.pk})

        roles = result.json()['roles']
        for role in roles:
            if role['name'] == 'TA2':
                role['can_grade'] = 1

        roles.append(
            serialize.RoleSerializer(
                factory.make_role_default_no_perms('test_role',
                                                   self.course)).data)
        test.api_patch_call(self, '/roles/{}/'.format(self.course.pk),
                            {'roles': roles}, login)

        role_test = Role.objects.get(name='TA2', course=self.course)
        self.assertTrue(role_test.can_grade)
        self.assertEquals(
            Role.objects.filter(name='test_role', course=self.course).count(),
            1)
示例#13
0
    def test_create_new_assignment(self):
        """test create new assignment."""
        lti_id = '12AB'
        course = factory.make_course("BeeldBewerken",
                                     "BB",
                                     enddate=timezone.now())

        role = factory.make_role_default_no_perms("teacher",
                                                  course,
                                                  can_add_assignment=True)
        factory.make_participation(user=self.user, course=course, role=role)

        login = test.logging_in(self, self.username, self.password)
        create_assign_dict = {
            'name': 'SIFT',
            'description': 'In this assign...',
            'course_id': course.pk,
            'lti_id': lti_id
        }

        test.api_post_call(self,
                           '/assignments/',
                           params=create_assign_dict,
                           login=login,
                           status=201)
        self.assertEquals(
            Lti_ids.objects.get(lti_id=lti_id).assignment.name, 'SIFT')
示例#14
0
    def test_create_user(self):
        user = {
            'username': '******',
            'password': '******',
            'first_name': 'Student',
            'last_name': 'Testing',
        }
        # No email
        test.api_post_call(self, '/users/', params=user, status=400)

        user['email'] = '*****@*****.**'
        test.api_post_call(self, '/users/', params=user, status=201)

        # Not allowed by instance
        self.user.is_superuser = True
        self.user.save()
        login = test.logging_in(self, self.username, self.password)
        test.api_patch_call(self,
                            '/instance/1/',
                            params={'allow_standalone_registration': False},
                            login=login,
                            status=200)
        user['username'] = '******'
        user['email'] = '*****@*****.**'
        test.api_post_call(self, '/users/', params=user, status=400)
示例#15
0
    def test_get_linkable_courses(self):
        """Test the get linkable courses function."""
        self.user.is_teacher = True
        self.user.save()

        test.set_up_courses('course', 3, author=self.user)
        test.set_up_courses('course', 4, author=self.user, lti_id=True)

        login = test.logging_in(self, self.username, self.password)

        response = test.api_get_call(self, '/courses/linkable/', login)
        self.assertEquals(len(response.json()['courses']), 7)

        # permissions and authorization check for the api call.
        login = test.logging_in(self, self.no_perm_user, self.no_perm_pass)
        test.api_get_call(self, '/courses/linkable/', login, status=403)
        test.test_unauthorized_api_get_call(self, '/courses/linkable/')
示例#16
0
    def test_get_nodes(self):
        """Test the get nodes function."""
        course = factory.make_course('Portfolio', 'PAV', author=self.rein)
        template = factory.make_entry_template('template')
        format = factory.make_format([template])
        assignment = factory.make_assignment('Colloq',
                                             'description1',
                                             format=format,
                                             courses=[course])
        student_user, student_pass, student = test.set_up_user_and_auth(
            'student', 'pass', '*****@*****.**')
        test.set_up_participation(student, course, 'Student')
        journal = test.set_up_journal(assignment, template, student, 4)

        login = test.logging_in(self, student_user, student_pass)
        response = test.api_get_call(self,
                                     '/nodes/',
                                     login,
                                     params={'journal_id': journal.pk})
        result = response.json()
        self.assertEquals(len(result['nodes']), 5)

        login = test.logging_in(self, self.rein_user, self.rein_pass)
        response = test.api_get_call(self,
                                     '/nodes/',
                                     login,
                                     params={'journal_id': journal.pk})
        result = response.json()
        self.assertEquals(len(result['nodes']), 4)

        # permissions and authorization check for the api call.
        login = test.logging_in(self, self.no_perm_user, self.no_perm_pass)
        test.api_get_call(self,
                          '/nodes/',
                          login,
                          status=403,
                          params={'journal_id': journal.pk})
        test.api_get_call(self,
                          '/nodes/',
                          login,
                          status=404,
                          params={'journal_id': self.not_found_pk})
        test.test_unauthorized_api_get_call(self,
                                            '/nodes/',
                                            params={'journal_id': journal.pk})
示例#17
0
 def test_forgot_password(self):
     login = test.logging_in(self, self.username, self.password)
     test.api_post_call(self,
                        '/forgot_password/',
                        login=login,
                        params={
                            'email': '',
                            'username': self.username
                        })
示例#18
0
    def test_get_assignment_data(self):
        """Test the get assignment data function."""
        course = factory.make_course('Portfolio', 'PAV', author=self.rein)
        template = factory.make_entry_template('template')
        format1 = factory.make_format([template])
        format2 = factory.make_format([template])
        assignment1 = factory.make_assignment('Colloq',
                                              'description1',
                                              format=format1,
                                              courses=[course],
                                              is_published=True)
        assignment2 = factory.make_assignment('Portfolio',
                                              'description2',
                                              format=format2,
                                              courses=[course],
                                              is_published=True)

        test.set_up_participation(self.user, course, 'Student')

        login_user = test.logging_in(self, self.username, self.password)
        resp = test.api_get_call(self,
                                 '/assignments/' + str(assignment1.pk) + '/',
                                 login_user)
        self.assertEquals(resp.json()['assignment']['name'], 'Colloq')
        self.assertIn('journal', resp.json()['assignment'])

        login_rein = test.logging_in(self, self.rein_user, self.rein_pass)
        resp = test.api_get_call(self,
                                 '/assignments/' + str(assignment2.pk) + '/',
                                 login_rein)
        self.assertEquals(resp.json()['assignment']['name'], 'Portfolio')

        # permissions and authorization check for the api call.
        login = test.logging_in(self, self.no_perm_user, self.no_perm_pass)
        test.api_get_call(self,
                          '/assignments/{}/'.format(assignment1.pk),
                          login,
                          status=403)
        test.api_get_call(self,
                          '/assignments/{}/'.format(assignment2.pk),
                          login,
                          status=403)
        test.test_unauthorized_api_get_call(
            self, '/assignments/{}/'.format(assignment1.pk))
示例#19
0
    def test_get_comments(self):
        """Test get comments function."""
        course = factory.make_course('Portfolio', 'PAV', author=self.rein)
        template = factory.make_entry_template('template')
        format = factory.make_format([template])
        assignment = factory.make_assignment('Colloq',
                                             'description1',
                                             format=format,
                                             courses=[course])
        student_user, student_pass, student = test.set_up_user_and_auth(
            'student', 'pass', '*****@*****.**')
        test.set_up_participation(student, course, 'Student')
        journal = factory.make_journal(assignment, student)
        entry = factory.make_entry(template)
        factory.make_node(journal, entry)
        factory.make_comment(entry, self.rein, 'Excellent!', True)

        login = test.logging_in(self, student_user, student_pass)

        result = test.api_get_call(self,
                                   '/comments/',
                                   login,
                                   params={
                                       'entry_id': entry.pk
                                   }).json()
        self.assertEquals(result['comments'][0]['text'], 'Excellent!')

        # permissions and authorization check for the api call.
        login = test.logging_in(self, self.no_perm_user, self.no_perm_pass)
        test.api_get_call(self,
                          '/comments/',
                          login,
                          status=403,
                          params={'entry_id': entry.pk})
        test.api_get_call(self,
                          '/comments/',
                          login,
                          status=404,
                          params={'entry_id': self.not_found_pk})
        test.test_unauthorized_api_get_call(self,
                                            '/comments/',
                                            params={'entry_id': entry.pk})
示例#20
0
    def test_get_user_teacher_courses(self):
        """Test get user teacher course function."""
        factory.make_course('Portfolio2016', 'PAV', author=self.rein)
        factory.make_course('Portfolio2017', 'PAV', author=self.rein)
        factory.make_course('Portfolio2018', 'PAV')

        login = test.logging_in(self, self.rein_user, self.rein_pass)
        response = test.api_get_call(self, '/courses/', login)
        self.assertEquals(len(response.json()['courses']), 2)

        # permissions and authorization check for the api call.
        test.test_unauthorized_api_get_call(self, '/courses/')
示例#21
0
 def test_get_lti_params_from_jwt_invalid(self):
     """Hopefully returns an error."""
     login = test.logging_in(self, self.username, self.password)
     self.request["user_id"] = "awefd"
     jwt_params = jwt.encode(self.request, 'fa12f4',
                             algorithm='HS256').decode('utf-8')
     response = test.api_get_call(
         self,
         '/get_lti_params_from_jwt/{0}/'.format(jwt_params),
         login=login,
         status=401)
     self.assertIn('Invalid', response.content.decode('utf-8'))
示例#22
0
    def test_get_course_assignments(self):
        """Test the get course assignment function."""
        course = factory.make_course('Portfolio',
                                     'PAV',
                                     author=self.rein,
                                     enddate=timezone.now())
        assigns = test.set_up_assignments('assign', 'desc', 2, course=course)
        test.set_up_participation(self.user, course, 'Student')
        factory.make_journal(assigns[0], self.user)
        factory.make_journal(assigns[1], self.user)

        login_user = test.logging_in(self, self.username, self.password)
        response = test.api_get_call(self,
                                     '/assignments/',
                                     login_user,
                                     params={'course_id': course.pk})
        self.assertEquals(len(response.json()['assignments']), 2)
        self.assertIn('journal', response.json()['assignments'][0])

        login_rein = test.logging_in(self, self.rein_user, self.rein_pass)
        response = test.api_get_call(self,
                                     '/assignments/',
                                     login_rein,
                                     params={'course_id': course.pk})
        self.assertEquals(len(response.json()['assignments']), 2)

        # permissions and authorization check for the api call.
        login = test.logging_in(self, self.no_perm_user, self.no_perm_pass)
        test.api_get_call(self,
                          '/assignments/',
                          login,
                          status=403,
                          params={'course_id': course.pk})
        test.api_get_call(self,
                          '/assignments/',
                          login,
                          status=404,
                          params={'course_id': self.not_found_pk})
        test.test_unauthorized_api_get_call(
            self, '/assignments/' + str(course.pk) + '/')
示例#23
0
    def test_get_course_roles(self):
        """Test the get delete assignment function."""
        teacher_user = '******'
        teacher_pass = '******'
        teacher = factory.make_user(teacher_user, teacher_pass,
                                    "*****@*****.**")
        factory.make_role_student("SD", self.course)
        factory.make_role_default_no_perms("HE", self.course)
        teacher_role = factory.make_role_teacher("TE", self.course)
        factory.make_participation(teacher, self.course, teacher_role)
        login = test.logging_in(self, teacher_user, teacher_pass)
        result = test.api_get_call(self,
                                   '/roles/',
                                   login,
                                   params={'course_id': self.course.pk})
        self.assertEquals(len(result.json()['roles']), 6)

        # permissions and authorization check for the api call.
        login = test.logging_in(self, self.no_perm_user, self.no_perm_pass)
        test.test_unauthorized_api_get_call(self,
                                            '/roles/',
                                            params={'course_id': 1})
        test.api_get_call(self,
                          '/roles/',
                          login,
                          params={'course_id': self.course.pk},
                          status=403)
        test.api_get_call(self,
                          '/roles/',
                          login,
                          params={'course_id': self.not_found_pk},
                          status=404)

        test.set_up_participation(self.no_permission_user, self.course,
                                  'Student')
        test.api_get_call(self,
                          '/roles/',
                          login,
                          params={'course_id': self.course.pk},
                          status=403)
示例#24
0
    def test_get_user_courses(self):
        """Test the get user courses function."""
        for course in test.set_up_courses('course', 4):
            student_role = Role.objects.get(name='Student', course=course)
            factory.make_participation(self.user, course, student_role)

        login = test.logging_in(self, self.username, self.password)

        response = test.api_get_call(self, '/courses/', login)
        self.assertEquals(len(response.json()['courses']), 4)

        # permissions and authorization check for the api call.
        test.test_unauthorized_api_get_call(self, '/courses/')
示例#25
0
 def test_get_lti_params_from_jwt_key_Error(self):
     """Hopefully returns the lti course data."""
     login = test.logging_in(self, self.username, self.password)
     self.request["user_id"] = "awefd"
     del self.request['custom_course_id']
     jwt_params = jwt.encode(self.request,
                             settings.SECRET_KEY,
                             algorithm='HS256').decode('utf-8')
     response = test.api_get_call(
         self,
         '/get_lti_params_from_jwt/{0}/'.format(jwt_params),
         login=login,
         status=400)
     self.assertIn('KeyError', response.content.decode('utf-8'))
示例#26
0
 def test_get_lti_params_from_jwt_course_student(self):
     """Hopefully returns the lti course and assignment data."""
     login = test.logging_in(self, self.username, self.password)
     self.request["user_id"] = "awefd"
     self.request["roles"] = settings.ROLES["Student"]
     jwt_params = jwt.encode(self.request,
                             settings.SECRET_KEY,
                             algorithm='HS256').decode('utf-8')
     response = test.api_get_call(
         self,
         '/get_lti_params_from_jwt/{0}/'.format(jwt_params),
         login=login,
         status=404)
     self.assertIn('course', response.content.decode('utf-8'))
示例#27
0
 def test_get_lti_params_from_jwt_expired(self):
     """Hopefully returns the lti course and assignment data."""
     login = test.logging_in(self, self.username, self.password)
     self.request["user_id"] = "awefd"
     self.request['exp'] = datetime.datetime.utcnow() - datetime.timedelta(
         minutes=30)
     jwt_params = jwt.encode(self.request,
                             settings.SECRET_KEY,
                             algorithm='HS256').decode('utf-8')
     response = test.api_get_call(
         self,
         '/get_lti_params_from_jwt/{0}/'.format(jwt_params),
         login=login,
         status=403)
     self.assertIn('expired', response.content.decode('utf-8'))
示例#28
0
    def test_get_course_data(self):
        """Test get coursedata function."""
        test.set_up_participation(self.user, self.course, 'Teacher')
        login = test.logging_in(self, self.username, self.password)

        response = test.api_get_call(self,
                                     '/courses/' + str(self.course.pk) + '/',
                                     login)

        self.assertEquals(response.json()['course']['name'], 'Beeldbewerken')
        self.assertEquals(response.json()['course']['abbreviation'], 'BB')

        # permissions and authorization check for the api call.
        login = test.logging_in(self, self.no_perm_user, self.no_perm_pass)
        test.api_get_call(self,
                          '/courses/' + str(self.course.pk) + '/',
                          login,
                          status=403)
        test.api_get_call(self,
                          '/courses/' + str(self.not_found_pk) + '/',
                          login,
                          status=404)
        test.test_unauthorized_api_get_call(
            self, '/courses/' + str(self.course.pk) + '/')
示例#29
0
 def test_get_lti_params_from_jwt_no_context_label(self):
     """Hopefully returns the lti course data."""
     login = test.logging_in(self, self.username, self.password)
     self.request["user_id"] = "awefd"
     del self.request['context_label']
     jwt_params = jwt.encode(self.request,
                             settings.SECRET_KEY,
                             algorithm='HS256').decode('utf-8')
     response = test.api_get_call(
         self,
         '/get_lti_params_from_jwt/{0}/'.format(jwt_params),
         login=login,
         status=200)
     self.assertIn(
         '"state": "{0}"'.format(lti_view.LTI_STATES.NEW_COURSE.value),
         response.content.decode('utf-8'))
示例#30
0
 def test_get_lti_params_from_jwt_assignment_teacher(self):
     """Hopefully returns the lti assignment data."""
     factory.make_course('TestCourse', 'aaaa', lti_id='asdf')
     login = test.logging_in(self, self.username, self.password)
     self.request["user_id"] = "awefd"
     jwt_params = jwt.encode(self.request,
                             settings.SECRET_KEY,
                             algorithm='HS256').decode('utf-8')
     response = test.api_get_call(
         self,
         '/get_lti_params_from_jwt/{0}/'.format(jwt_params),
         login=login,
         status=200)
     self.assertIn(
         '"state": "{0}"'.format(lti_view.LTI_STATES.NEW_ASSIGN.value),
         response.content.decode('utf-8'))