Exemplo n.º 1
0
 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
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
 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)))))
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
    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)
Exemplo n.º 8
0
 def _create_signature(self, username, course_id):
     """
     Create integrity signature for a given username and course id
     """
     create_integrity_signature(username, course_id)