def test_user_needs_integrity_signature( self, enrollment_mode, is_staff, has_integrity_signature, needs_integrity_signature, ): """ Test that the correct value is returned if the user needs to sign the integrity agreement for the course. """ if is_staff: self.user.is_staff = True self.user.save() if enrollment_mode: CourseEnrollment.enroll(self.user, self.course.id, enrollment_mode) if has_integrity_signature: create_integrity_signature(self.user.username, str(self.course.id)) response = self.client.get(self.url) assert response.status_code == 200 courseware_data = response.json() assert 'is_integrity_signature_enabled' in courseware_data assert courseware_data['is_integrity_signature_enabled'] is True assert 'user_needs_integrity_signature' in courseware_data assert courseware_data[ 'user_needs_integrity_signature'] == needs_integrity_signature
def test_get_integrity_signature(self): """ Test to get an integrity signature """ create_integrity_signature(self.user.username, self.course_id) signature = get_integrity_signature(self.user.username, self.course_id) self._assert_integrity_signature(signature)
def test_get_integrity_signatures_for_course(self): """ Test to get all integrity signatures for a course """ create_integrity_signature(self.user.username, self.course_id) second_user = UserFactory() create_integrity_signature(second_user.username, self.course_id) signatures = get_integrity_signatures_for_course(self.course_id) self._assert_integrity_signature(signatures[0]) self.assertEqual(signatures[1].user, second_user) self.assertEqual(signatures[1].course_key, self.course.id)
def test_create_duplicate_integrity_signature(self): """ Test that duplicate integrity signatures cannot be created """ with LogCapture(LOGGER_NAME, level=logging.WARNING) as logger: create_integrity_signature(self.user.username, self.course_id) create_integrity_signature(self.user.username, self.course_id) signature = get_integrity_signature(self.user.username, self.course_id) self._assert_integrity_signature(signature) logger.check((LOGGER_NAME, 'WARNING', ( 'Integrity signature already exists for user_id={user_id} and ' 'course_id={course_id}'.format(user_id=self.user.id, course_id=str( self.course_id)))))
def test_create_integrity_signature(self): """ Test to create an integrity signature """ signature = create_integrity_signature(self.user.username, self.course_id) self._assert_integrity_signature(signature)
def post(self, request, course_id): """ Create an integrity signature for the requesting user and course. If a signature already exists, returns the existing signature instead of creating a new one. /api/agreements/v1/integrity_signature/{course_id} Example response: { username: "******", course_id: "org.2/course_2/Run_2", created_at: "2021-04-23T18:25:43.511Z" } """ if not settings.FEATURES.get('ENABLE_INTEGRITY_SIGNATURE'): return Response(status=status.HTTP_404_NOT_FOUND, ) username = request.user.username signature = create_integrity_signature(username, course_id) serializer = IntegritySignatureSerializer(signature) return Response(serializer.data)
def post(self, request, course_id): """ Create an integrity signature for the requesting user and course. If a signature already exists, returns the existing signature instead of creating a new one. /api/agreements/v1/integrity_signature/{course_id} Example response: { username: "******", course_id: "org.2/course_2/Run_2", created_at: "2021-04-23T18:25:43.511Z" } """ # check that waffle flag is enabled if not is_integrity_signature_enabled(): return Response(status=status.HTTP_404_NOT_FOUND, ) username = request.user.username signature = create_integrity_signature(username, course_id) serializer = IntegritySignatureSerializer(signature) return Response(serializer.data)
def _create_signature(self, username, course_id): """ Create integrity signature for a given username and course id """ create_integrity_signature(username, course_id)