def test_other_get_course_list_permission_denied(self):
        [admin] = obj_build.make_users(1)
        for course in self.courses:
            course.admins.add(admin)
        [guest] = obj_build.make_users(1)

        for user in admin, guest:
            self.client.force_authenticate(user=user)
            response = self.client.get(reverse('course-list'))
            self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code)
    def setUp(self):
        super().setUp()
        self.course = obj_build.make_course()
        self.client = APIClient()
        self.url = reverse('course-admins', kwargs={'pk': self.course.pk})

        [self.superuser] = obj_build.make_users(1, superuser=True)
        [self.staff] = obj_build.make_staff_users(self.course, 1)
        [self.student] = obj_build.make_student_users(self.course, 1)
        [self.guest] = obj_build.make_users(1)
        [self.handgrader] = obj_build.make_handgrader_users(self.course, 1)
    def setUp(self):
        super().setUp()
        self.group = obj_build.make_group()
        self.student = self.group.members.first()
        self.project = self.group.project
        ag_models.ExpectedStudentFile.objects.validate_and_create(
            pattern='*', max_num_matches=10, project=self.project)

        self.submitted_files = [SimpleUploadedFile('file{}'.format(i),
                                                   'waaaluigi{}'.format(i).encode())
                                for i in range(3)]
        self.submission = obj_build.make_submission(
            group=self.group,
            submitted_files=self.submitted_files,
            status=Submission.GradingStatus.finished_grading)

        self.handgrading_rubric = hg_models.HandgradingRubric.objects.validate_and_create(
            project=self.project
        )  # type: hg_models.HandgradingRubric

        [self.admin] = obj_build.make_admin_users(self.project.course, 1)
        [self.staff] = obj_build.make_staff_users(self.project.course, 1)
        [self.handgrader] = obj_build.make_users(1)
        self.project.course.handgraders.add(self.handgrader)

        self.client = APIClient()
        self.course = self.handgrading_rubric.project.course
        self.url = reverse('handgrading_result',
                           kwargs={'group_pk': self.submission.group.pk})
    def test_get_course_not_found(self):
        [guest] = obj_build.make_users(1)
        self.client.force_authenticate(guest)

        response = self.client.get(
            reverse('course-detail', kwargs={'pk': 3456}))
        self.assertEqual(status.HTTP_404_NOT_FOUND, response.status_code)
Ejemplo n.º 5
0
    def setUp(self):
        super().setUp()

        self.project = obj_build.make_project(max_group_size=2)
        self.course = self.project.course

        self.student_users = unsorted_users(obj_build.make_student_users(self.course, 2))
        self.staff_users = unsorted_users(obj_build.make_staff_users(self.course, 2))
        self.guest_group = obj_build.make_users(2)
    def test_superuser_get_course_list(self):
        [superuser] = obj_build.make_users(1, superuser=True)

        self.client.force_authenticate(user=superuser)
        response = self.client.get(reverse('course-list'))

        self.assertEqual(status.HTTP_200_OK, response.status_code)

        expected_content = [course.to_dict() for course in self.courses]
        self.assertCountEqual(expected_content, response.data)
Ejemplo n.º 7
0
    def test_non_admin_create_permission_denied(self):
        [enrolled] = obj_build.make_student_users(self.course, 1)
        [staff] = obj_build.make_staff_users(self.course, 1)
        [handgrader] = obj_build.make_users(1)
        self.project.course.handgraders.add(handgrader)

        for user in [enrolled, staff, handgrader]:
            self.do_permission_denied_create_test(
                handgrading_models.HandgradingRubric.objects, self.client,
                user, self.url, self.data)
Ejemplo n.º 8
0
    def setUp(self):
        super().setUp()

        self.course = obj_build.make_course()
        self.client = APIClient()
        self.url = reverse('course-students', kwargs={'pk': self.course.pk})

        [self.admin] = obj_build.make_admin_users(self.course, 1)
        [self.staff] = obj_build.make_staff_users(self.course, 1)
        [self.guest] = obj_build.make_users(1)
    def test_handgrader_also_staff_create_invitation(self):
        [handgrader_staff] = obj_build.make_users(1)
        self.course.handgraders.add(handgrader_staff)
        self.course.staff.add(handgrader_staff)

        self.project.validate_and_update(max_group_size=3)
        args = {'invited_usernames': [self.admin.username]}
        self.do_create_object_test(self.project.group_invitations, self.client,
                                   handgrader_staff,
                                   self.get_invitations_url(self.project),
                                   args)
    def test_get_course_by_pk(self):
        course = obj_build.make_course()
        [admin] = obj_build.make_admin_users(course, 1)
        [guest] = obj_build.make_users(1)

        for user in admin, guest:
            self.client.force_authenticate(user)
            response = self.client.get(
                reverse('course-detail', kwargs={'pk': course.pk}))

            self.assertEqual(status.HTTP_200_OK, response.status_code)
            self.assertEqual(course.to_dict(), response.data)
Ejemplo n.º 11
0
    def test_staff_valid_retrieve(self):
        [staff] = obj_build.make_staff_users(self.course, 1)
        [admin] = obj_build.make_admin_users(self.course, 1)
        [handgrader] = obj_build.make_users(1)
        self.handgrading_rubric.project.course.handgraders.add(handgrader)

        for user in [admin, staff, handgrader]:
            self.client.force_authenticate(user)
            response = self.client.get(self.url)
            self.assertEqual(status.HTTP_200_OK, response.status_code)
            self.assertSequenceEqual(self.handgrading_rubric.to_dict(),
                                     response.data)
    def test_handgrader_also_enrolled_create_invitation(self):
        [handgrader_student] = obj_build.make_users(1)
        self.course.handgraders.add(handgrader_student)
        self.course.students.add(handgrader_student)

        self.project.validate_and_update(max_group_size=3)
        other_enrolled = self.clone_user(self.enrolled)
        args = {'invited_usernames': [other_enrolled.username]}
        self.do_create_object_test(self.project.group_invitations, self.client,
                                   handgrader_student,
                                   self.get_invitations_url(self.project),
                                   args)
    def test_other_user_roles(self):
        [guest] = obj_build.make_users(1)

        self.do_get_object_test(self.client, guest, self.url,
                                self.expected_response_base())
 def setUp(self):
     super().setUp()
     self.client = APIClient()
     self.course = obj_build.make_course()
     [self.guest] = obj_build.make_users(1)