def test_list_program_uuid_filtering(self): """ Verify the endpoint returns data for all UserCredentials in the given program. """ # Course run 1 is in a program, course run 2 is not course1_run = CourseRunFactory() course2_run = CourseRunFactory() program = ProgramFactory(course_runs=[course1_run]) program_certificate = ProgramCertificateFactory( site=self.site, program_uuid=program.uuid) course1_certificate = CourseCertificateFactory( site=self.site, course_id=course1_run.key) course2_certificate = CourseCertificateFactory( site=self.site, course_id=course2_run.key) # Create some credentials related to the program course1_cred = UserCredentialFactory(credential=course1_certificate) program_creds = UserCredentialFactory.create_batch( 3, credential=program_certificate) expected = [course1_cred] + program_creds # Create some more credentials that we don't expect to see returned UserCredentialFactory.create_batch(3) UserCredentialFactory(credential=course2_certificate) self.authenticate_user(self.user) self.add_user_permission(self.user, 'view_usercredential') response = self.client.get(self.list_path + '?program_uuid={}'.format(program.uuid)) self.assertEqual(response.status_code, 200) self.assertEqual(response.data['results'], self.serialize_user_credential(expected, many=True))
def test_list_status_filtering(self): """ Verify the endpoint returns data for all UserCredentials that match the specified status. """ awarded = UserCredentialFactory.create_batch(3, credential__site=self.site, status=UserCredential.AWARDED) revoked = UserCredentialFactory.create_batch(3, credential__site=self.site, status=UserCredential.REVOKED) self.authenticate_user(self.user) self.add_user_permission(self.user, 'view_usercredential') for status, expected in (('awarded', awarded), ('revoked', revoked)): response = self.client.get(self.list_path + '?status={}'.format(status)) self.assertEqual(response.status_code, 200) self.assertEqual(response.data['results'], self.serialize_user_credential(expected, many=True))
def test_list_program_uuid_filtering(self): """ Verify the endpoint returns data for all UserCredentials awarded for the given program. """ UserCredentialFactory.create_batch(3) program_certificate = ProgramCertificateFactory(site=self.site) expected = UserCredentialFactory.create_batch(3, credential=program_certificate) self.authenticate_user(self.user) self.add_user_permission(self.user, 'view_usercredential') response = self.client.get(self.list_path + '?program_uuid={}'.format(program_certificate.program_uuid)) self.assertEqual(response.status_code, 200) self.assertEqual(response.data['results'], self.serialize_user_credential(expected, many=True))
def test_list_username_filtering(self): """ Verify the endpoint returns data for all UserCredentials awarded to the user matching the username. """ UserCredentialFactory.create_batch(3, credential__site=self.site) self.authenticate_user(self.user) # Users should be able to view their own credentials without additional permissions username = self.user.username expected = UserCredentialFactory.create_batch(3, credential__site=self.site, username=username) self.assert_list_username_filter_request_succeeds(username, expected) # Privileged users should be able to view all credentials username = '******' expected = UserCredentialFactory.create_batch(3, credential__site=self.site, username=username) self.add_user_permission(self.user, 'view_usercredential') self.assert_list_username_filter_request_succeeds(username, expected)