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)
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)
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)
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)
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)